log4j.xml 基本配置

1      简介

       一般log4j的xml配置方式基本步骤有3个,第一步:配置appender;第二步:配置logger;第三步:配置root。下面配置一个ConsoleAppender和两个DailyRollingFileAppender为例具体展开。

1.1  日志级别

       不考虑其他因素,日记级别FATAL>ERROR>WARN>INFO>DEBUG,这个是许多同学都清楚的,但是结合appender,logger,root的配置后,日志打印的结果会发生一些微妙的变化。

       首先,root的中的日志级别在用户没有为某一个具体的logger配置日志级别的时候才会对该logger生效。这里就可以用来解释有的同学问为什么在root中配置了ERROR级别,但是日志中依旧有INFO的日志输出。

       其次,如果某一个appender配置了日志过滤器,那使用该appender的logger配置日志级别的时候,范围不超出appender过滤的级别信息才会被输出。

2      配置appender

       图2-1是一个标准的ConsoleAppender配置:


图 2‑1

       如注释所描述,ConsoleAppender一般在我们调试项目时候用处比较大,这里不再多余描述。

       图2-2是一个标准的FileAppender配置,这里我配置了一个info.log文件和一个eror.log,位于/opt/logs目录下面,分别用来记录一般消息和错误消息。

                                                    

图 2‑2

         appender的配置相对比较简单,除了过滤器,没有特殊要注意的。

3   配置logger

       图3-1是两种looger配置。


图 3‑1

         logger的name属性指代的是程序包路径,不用赘述。additivity属性,表示是否遵循缺省的继承机制。

         需要注意:

         1如果我们配置了true,那我们最好不要再给该logger配置appender-ref属性,除非被配置的appender-ref我们没有继续添加在root的appender-ref中,否则我们会发现日志重复。

         2如果我们配置了false,那就必须为该logger配置appender-ref,否则日志不会被打印。

4   配置root

       图4-1是一个标准的root配置。

图 4‑1

         

root的作用是是收集所有配置的logger(additivity=true)反馈上来的信息流并且根据root中配置的appender-ref进行输出,所以,如果我们logger配置了additivity=true,又配置了appender-ref,会导致日志重复。

         注意:这里的level值对那些没有配置日志级别,而且additivity=true的logger才会有作用。

下面是具体的配置信息:

xml version="1.0" encoding="UTF-8"?>  

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >

   
   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <param name="encoding" value="UTF-8" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %t %l %m%n" />
      layout>
      
      
   appender>

   
   <appender name="DEFAULT-APPENDER-REMOTE" class="org.apache.log4j.net.SyslogAppender">
      <param name="SyslogHost" value="${logServer}"/> 
       <param name="Facility" value="LOCAL1"/>
          <param name="FacilityPrinting" value="true"/>
       <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p %t %c %m%n" />
       layout> 
   appender>
   
   <appender name="FRAMEWORK-APPENDER-REMOTE" class="org.apache.log4j.net.SyslogAppender">
      <param name="SyslogHost" value="${logServer}"/> 
       <param name="Facility" value="LOCAL3"/>
          <param name="FacilityPrinting" value="true"/>
       <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p %t %c %m%n" />
       layout> 
   appender>
   
   
   <appender name="INFO-LOCAL" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="file" value="/opt/logs/info.log" />
      <param name="append" value="true" />
      <param name="encoding" value="UTF-8" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %t %l %m%n" />
      layout>
      
      <filter class="org.apache.log4j.varia.LevelRangeFilter">
         <param name="levelMin" value="DEBUG" />
         <param name="levelMax" value="INFO" />
         <param name="AcceptOnMatch" value="true" />
      filter>
   appender>
   <appender name="ERROR-LOCAL" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="file" value="/opt/logs/error.log" />
      <param name="append" value="true" />
      <param name="encoding" value="UTF-8" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %t %l %m%n" />
      layout>
      
      <filter class="org.apache.log4j.varia.LevelRangeFilter">
         <param name="levelMin" value="WARN" />
         <param name="levelMax" value="FATAL" />
         <param name="AcceptOnMatch" value="true" />
      filter>
   appender>

   
   <logger name="com.test.log4j" additivity="true">
      
      <level value="INFO" />
      
      
      
      
   logger>
   <logger name="com.test2" additivity="false">
      <level value="INFO" />
      <appender-ref ref="INFO-LOCAL" />
   logger>

   
   
   <root>
      
      <level value="DEBUG" />
      <appender-ref ref="CONSOLE" />
      <appender-ref ref="INFO-LOCAL" />
      <appender-ref ref="ERROR-LOCAL"/>
   root>
log4j:configuration>  

你可能感兴趣的:(log4j.xml 基本配置)