`
xitong
  • 浏览: 6202891 次
文章分类
社区版块
存档分类
最新评论

Log4j的使用之配置

 
阅读更多

对log4j环境的配置就是对root logger的配置,包括把root logger设置为哪个级别(level);为它增加哪些appender,等等。这些可以通过设置系统属性的方法来隐式地完成,也可以在程序里调用XXXConfigurator.configure()方法来显式地完成。

可以通过两种方式来对log4j进行配置

A)程序配置

BasicConfigurator.configure()方法使用最简的方法配置log4j环境。注:所谓配置log4j环境,就是指配置root logger,因为所有其它的logger都是root logger的后代,所以它们(默认情况下)都将继承root logger的性质。

BasicConfigurator.configure()完成的任务是:

  1. 用默认pattern创建PatternLayout对象p:
    PatternLayout p = new PatternLayout("%-4r[%t]%-5p%c%x - %m%n");
  2. 用p创建ConsoleAppender对象a,目标是system.out,标准输出设备:
    ConsoleAppender a = new ConsoleAppender(p,ConsoleAppender.SYSTEM_OUT);
  3. 为root logger增加一个ConsoleAppender p:
    rootLogger.addAppender(p);
  4. 把root logger的log level设置为DEBUG级别:
    rootLogger.setLevel(Level.DEBUG);

B) 文件配置

B1)Xml格式的配置文件

log4j的xml配置文件的树状结构如下所示,注意下图只显示了常用的部分。 :.


xml declaration and dtd
|
log4j:configuration
|
+-- appender (name, class)
| |
| +-- param (name, value)
| +-- layout (class)
| |
| +-- param (name, value)
+-- logger (name, additivity)
| |
| +-- level (class, value)
| | |
| | +-- param (name, value)
| +-- appender-ref (ref)
+-- root
|
+-- param (name, class)
+-- level
| |
| +-- param (name, value)
+-- appender-ref (ref)

创建ConsoleAppender对象
ConsoleAppender的构造方法不接受其它的参数。 :.


... ... ... ...
<appender name="console.log" class="org.apache.log4j.ConsoleAppender">
<layout ... >
... ...
</layout>
</appender>
... ... ... ...

创建FileAppender对象
可以为FileAppender类的构造方法传递两个参数:File表示日志文件名;Append表示如文件已存在,是否把日志追加到文件尾部,可能取值为"true"和"false"(默认)。 :.


... ... ... ...
<appender name="file.log" class="org.apache.log4j.FileAppender">
<param name="File" value="/tmp/log.txt" />
<param name="Append" value="false" />
<layout ... >
... ...
</layout>
</appender>
... ... ... ...

创建RollingFileAppender对象
除了File和Append以外,还可以为RollingFileAppender类的构造方法传递两个参数:MaxBackupIndex备份日志文件的个数(默认是1个);MaxFileSize表示日志文件允许的最大字节数(默认是10M)。 :.


... ... ... ...
<appender name="rollingFile.log" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/tmp/rollingLog.txt" />
<param name="Append" value="false" />
<param name="MaxBackupIndex" value="2" />
<param name="MaxFileSize" value="1024" />
<layout ... >
... ...
</layout>
</appender>
... ... ... ...

创建PatternLayout对象
可以为PatternLayout类的构造方法传递参数ConversionPattern。 :.


... ... ... ...
<layout class="org.apache.log4j.PatternLayout>
<param name="Conversion" value="%d [%t] %p - %m%n" />
</layout>
... ... ... ...

一个完整的例子如下:

log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="appender1" class="org.apache.log4j.FileAppender">
<param name="File" value="gasturbine.log1.txt"/>
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
</layout>
</appender>

<appender name="appender2" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="gasturbine.log2.txt" />
<param name="Append" value="false" />
<param name="MaxBackupIndex" value="5" />
<param name="MaxFileSize" value="1024" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n" />
</layout>
</appender>

<root>
<level value ="debug"/>
<appender-ref ref="appender1"/>
<appender-ref ref="appender2"/>
</root>

</log4j:configuration>

可以用下面这种方法把配置信息文件读入到Java程序中:

DOMConfigurator.configure("classes/log4j.xml");

B1)文本文件形式的配置文件


一个例子:

log4j.properties

#Logger
log4j.rootLogger=DEBUG, appender1,appender2


#Appender1
log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.File=gasturbine.log1.txt

#Appender2
log4j.appender.appender2=org.apache.log4j.RollingFileAppender
log4j.appender.appender2.File=gasturbine.log2.txt
log4j.appender.appender2.MaxFileSize=1024KB
log4j.appender.appender2.MaxBackupIndex=5

#Layout1
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=[%d] %t %c %-5p - %m%n

#Layout2
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d] %t %c %-5p - %m%n


#define the level of package
log4j.logger.gasturbine.model.component.compmodel.volume=DEBUG

与xml文件功能非常累似,就不再废话了

注意装载方式:PropertyConfigurator.configure("classes/log4j.properties");

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics