Log4j的使用之配置

来源:互联网 发布:易乎社区发展怎么样 编辑:程序博客网 时间:2024/05/04 07:29

对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");

原创粉丝点击