Posted on 2011-11-14 09:04
陈小东 阅读(632)
评论(0) 编辑 收藏
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件log4j.properties(键=值)。
log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现,当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中实际使用最多的还是log4j,人们遗忘了sun的日志工具类。它的一个独有特性包括在类别中继承的概念。通过使用类别层次结构,这样就减少了日志记录输出量,并将日志记录的开销降到最低。
关于log4j的介绍就不再多说了,网上有很多相关的资料。目前我们华南研发中心也在使用log4j,但就我参加的项目而言有一点的问题,我们应该不是为了使用log4j而去使用,要使用log4j能够为我们带来便利和提高效率。下面主要就如何快速合理的使用log4j做一下介绍。(有不对的地方,请大家指正)
Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过Logger.getLogger(String name)或Logger.getLogger(Class clazz)方法获得。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到控台屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,级别依次从低到高为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过或等于配置中规定的级别时信息才能真正的输出,如果配置OFF则不打出任何信息,假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码。(这点实在是方便啊。我们不用再使用system.out 在项目运用时还要去掉大量的system.out)
log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改property文件就要重打jar包,麻烦的紧。而如果采用 xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。查了些资料,终于把系统的log4j改成在xml中配置啦。
使用步骤为:第一步:加入log4j-1.2.8.jar到lib下。第二步:在CLASSPATH下建立log4j.properties。第三步:在代码中使用