日历

2008 11.19 Wed
      1
2345678
9101112131415
16171819202122
23242526272829
30      
«» 2008 - 11 «»

日志分类

文章搜索

日志文章

2007年04月29日 20:40:15

log4j学习笔记

log4j介绍
loj4j
apache组织推出的通用软件包,通过log4j可以将日志信息输出到文件,OutputStream,java.io.Writer,
远程log4j服务器和远程Unix Syslog守护进程,甚至是NT的事件记录器,通过使用Log4j我们还可以控制每一条
日志的输出格式,通过定义每一条日志的级别,我们能更加细致控制日志的生成过程,这些都可以通过一个配置文件灵活的
进行配置,不需要修改相应代码。

Log4j主要由三种主要的组件组成:LoggerAppender,Layout这三种组件协同工作,使得开发人员可以依照消息的类型和级别
来记录信息并在程序运行时控制消息以什么样式在什么地方被输出。

1.Logger记录器组件
负责产生日志,并能够对日志信息进行分类筛选,控制什么样的日志应该被输出,什么样的日志应该被忽略
允许程序员定义多个记录器,每个记录器有自己的名字记录器之间通过名字来表明隶属关系。
Log4j
有一个跟记录器,org.apache.log4j.Logger类位于记录器层次中的顶部,他永远存在切不能通过名字检索或引用,他可通过该类
的静态函数getRootLogger()函数来得到他,其他记录器通过该类的getLogger(String name)是实例化
例:
获得跟记录器:static Logger logger=Logger.getRootLogger();
获得其他记录器:static Logger bookLogger=Logger.getLogger("bookstoreLogger");

记录器还有一个属性为日志级别,一共有5种可能的级别,由高到底为FATAL,ERROR,WARN,INFO,DEBUG
不同的记录器可以有不同的级别如果一个记录器已经定义了日志级别,他将不会从上层记录器继承日志级别为了保证所有记录器都有级别
所以跟记录器总是有级别。

2.Appender组件
信息通过Appender足见输出到目的地,一个Appender实例就表示一个输出的目的地,目前Append组件支持将日志输出到控制台,文件,
GUI
组件,远程套结字服务器,JMS等等。
Log4j
提供了以下几种Appender
1.org.apache.log4j.ConsoleAppender--
将日志输出到控制台。
2.org.apache.log4j.FileAppender---
将日志输出到文件中。
3.org.apache.log4j.DailyRollingFileAppender---
按照指定的时间或日期频率滚动产生日志文件。
4.org.apache.log4j.RollingFileAppender---
当达到一定尺寸时备份文件并产生新的记录文件。
*
每个记录器都有一个继承标志用于决定记录器是否可以继承其父记录器的Appender,如果为真则可以继承父记录器的Appender
并且是一种叠加关系,也就是说如果父记录器有某个Appender并且子记录器也有相同的Appender并且这种继承关系为true的话
会在同一个目的地输出两次。

3.Layout组件
Layout
组件负责格式化输出的日志信息,一个Appender只能有一个Layout,主要有以下几种Layout.
1.org.apache.log4j.SimpleLayout---
简单格式按照日志级别-日志消息组成,如:DEBUG-Helloword.
2.org.apache.log4j.HTMLLayout---
HTML表格方式输出日志。
3.org.apache.log4j.xmlXMLLayout---
以一系列定义在log4j中的<log4j:event>元素组成。
4.org.apache.log4j.TTCCLayout---
由时间,线呈,类别,嵌套的诊断上下文信息组成。
5.org.apache.log4j.PatternLayout----
可以按照一定的转换模式指定日志信息的输出格式。

上述三种主要组件之间的关系为LoggerAppender为一对多,也就是一个Logger可以拥有多个输出目的地。
一个AppenderLayout为一对一的关系,也就是一个Appender对应一种输出格式。


使用Log4j
Log4j
在程序中主要通过3步来使用
1.
得到日志记录器,对于跟记录器通过getRootLogger()函数来得到他,对于其他记录器则通过Logger类的静态函数
getLogger(String name)
来得到。
2.
读取配置文件,在得到日志记录器后第2步就是要配置Log4j运行环境,Log4j的环境可以通过程序来配置,如果没有做任何配置
他会使用其默认配置,更加灵活的方式是使用配置文件来配置Log4j,目前配置文件有2种方式,一种是使用key=valueJAVA属性格式
另外一种是XML文件。

在程序中加载配置文件的两种方式
1.
使用PropertyConfigurator.configure(String configFileName)
读取使用key=value方式编写的配置文件来设置log4j的运行环境。
2.
使用DOMConfigurator.configure(String filename)
读取XML格式的配置文件来设置Log4j的运行环境。

配置Logger组件
1.
配置跟记录器语法:
log4j.rootLogger=[level],[appenderName1],[appenderName2].....
其中level指定日志的级别可选OFFDEBUGINFOWARNERRORFATALALLappenderName指定Appender组件根据对应关系可以有多个appenderName
2.配置其他记录器语法:
log4j.logger.loggerName=[level],[appenderName1],[appenderName2].....
前面的log4j.logger为前缀定义不可变loggerName为自定义记录器名字,可随便取

配置Appender组件
log4j.appender.appenderName=
完整的类名(完整的类名也就是要写上对应的是那种输出目的地也就是那种终端输出)
因为上面记录器定义了某个输出目的地,所以必须写上这个输出目的地,比如:
log4j.logger.test=DEBUG,console(
这里定义了console控制台目的地,所以要写一个相对应的输出目的地,当然console可以随便取)
log4j.appender.console=org.apache.log4j.ConsoleAppender
(这里就要定义这个输出目的地名--名字为console

配置Layout组件
log4j.appender.appenderName.layout=
完整的类名(完整类的名称也就是要使用的是那种格式来输出信息)

Tags: dfadfdsfd  

类别: 无分类 |  评论(0) |  浏览(2515) |  收藏
发表评论
看不清楚,换一张