Log4j配置实践

来源:互联网 发布:淘宝退货率怎么看 编辑:程序博客网 时间:2024/04/30 18:38

在使用log4j打印应用日志的时候,有同事问我,同一个logger的日志的不同level可以输出到不同的文件么?这个。。。我告诉他当然可以,在我们使用Log4j的生产环境中一直都是把所有logger的error 以上level日志统一输入到错误日志文件,方便系统监控。

其实这个很容易实现,我们的做法就是在logger里面加入2个appender,appender设置不同的min和max level,具体如下:

<logger name="com...." additivity="false">   <appender-ref ref="normal"/>   <appender-ref ref="error"/></logger>

<appender name="normal" class="org.apache.log4j.FileAppender">   <param name="file" value="${log}/normal.log"/>   <param name="append" value="true"/>   <layout class="org.apache.log4j.PatternLayout">      <param name="conversionPattern" value="%m%n"/>   </layout>   <filter>       <param name="levelMax" value="warn" />   </filter></appender><appender name="error" class="org.apache.log4j.FileAppender">   <param name="file" value="${log}/error.log"/>   <param name="append" value="true"/>   <layout class="org.apache.log4j.PatternLayout">      <param name="conversionPattern" value="%m%n"/>   </layout>   <filter>       <param name="levelMin" value="error" />   </filter></appender>

Note:在使用Log4j的Web应用测试环境中,我们经常会结合Spring的Log4jConfigListener来实现log的动态更新。下面的例子说明每6秒读取一次web-fin/log4j.xml的变动

<context-param>         <param-name>log4jConfigLocation</param-name>         <param-value>WEB-INF/log4j.xml</param-value>     </context-param>       <context-param>         <param-name>log4jRefreshInterval</param-name>         <param-value>6000</param-value>     </context-param>       <listener>         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>     </listener>  


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="normal" class="org.apache.log4j.RollingFileAppender"><param name="file" value="normal.log" /><param name="MaxBackupIndex" value="10" /><param name="maxFileSize" value="10KB" /><param name="append" value="true" /><layout class="org.apache.log4j.PatternLayout"><param name="conversionPattern" value="%m%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMax" value="warn" /></filter></appender><appender name="error" class="org.apache.log4j.DailyRollingFileAppender"><param name="file" value="error.log" /><param name="append" value="true" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="conversionPattern" value="%m%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="error" /></filter></appender><logger name="com.elulian.CustomerSecurityManagementSystem" additivity="false"><level value="trace" /><appender-ref ref="normal" /><appender-ref ref="error" /></logger><root>    <level value="info" /><appender-ref ref="normal" /><appender-ref ref="error" /></root></log4j:configuration> 




0 0
原创粉丝点击