log4j不同级别日志分不同文件记录

最近被问到一个log4j分不同文件记录不同级别日志的问题,一下给难倒了,以前没有留意过log4j的具体功能,只是了解了下。如今自己还差的远啊。╮(╯▽╰)╭。。。

参考了前段时间的那个项目中的log4j配置文件,发现那个只不过将不同模组的日志记录到不同的日志文件。并未按日志级别分文件记录。自己在动手调试的过程中结合查阅网上很多博文,终于以xml格式配置的方式调通。具体配置如下:

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="stdout" class="org.apache.log4j.ConsoleAppender">  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

    </appender>  

      

    <appender name="traceLog4Debug" class="org.apache.log4j.RollingFileAppender">  

        <param name="File" value="C:/traceLog4Debug.log"/>  

        <param name="maxFileSize" value="2000KB"/>  

        <param name="maxBackupIndex" value="20"/>  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

    </appender>  

      

    <appender name="debugLog" class="org.apache.log4j.RollingFileAppender">  

        <param name="File" value="C:/debug.log"/>  

        <param name="maxFileSize" value="2000KB"/>  

        <param name="maxBackupIndex" value="10"/>  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

        <!-- filter作用?  配置LevelMax与LevelMin限定输出到文件的日志级别 -->  

        <filter class="org.apache.log4j.varia.LevelRangeFilter">  

                        <param name="LevelMax" value="DEBUG" />  

                        <param name="LevelMin" value="DEBUG" />  

                </filter> 

    </appender>  

      

    <appender name="infoLog" class="org.apache.log4j.RollingFileAppender">  

        <param name="File" value="C:/info.log"/>  

        <param name="maxFileSize" value="2000KB"/>  

        <param name="maxBackupIndex" value="10"/>  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

        <filter class="org.apache.log4j.varia.LevelRangeFilter">  

                    <param name="LevelMax" value="INFO" />  

                    <param name="LevelMin" value="INFO" />  

            </filter>  

    </appender>  

      

    <appender name="warnLog" class="org.apache.log4j.RollingFileAppender">  

        <param name="File" value="C:/warn.log"/>  

        <param name="maxFileSize" value="2000KB"/>  

        <param name="maxBackupIndex" value="10"/>  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

        <filter class="org.apache.log4j.varia.LevelRangeFilter">  

                    <param name="LevelMax" value="WARN" />  

                    <param name="LevelMin" value="WARN" />  

            </filter>  

    </appender>  

      

    <appender name="errorLog" class="org.apache.log4j.RollingFileAppender">  

        <param name="File" value="C:/error.log"/>  

        <param name="maxFileSize" value="2000KB"/>  

        <param name="maxBackupIndex" value="10"/>  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern"  

                value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>  

        </layout>  

        <filter class="org.apache.log4j.varia.LevelRangeFilter">  

                    <param name="LevelMax" value="ERROR" />  

                    <param name="LevelMin" value="ERROR" />  

            </filter>  

    </appender>  

      

    <!-- 记录该包下所有日志 ,不同page记录方式不同-->  

    <logger name="com.javaeye.paopaohou">  

        <level value="ALL"/>  

        <appender-ref ref="stdout"/>  

        <appender-ref ref="traceLog4Debug"/>  

        <appender-ref ref="debugLog"/>  

        <appender-ref ref="infoLog"/>  

        <appender-ref ref="warnLog"/>  

        <appender-ref ref="errorLog"/>  

    </logger>  

      

      

      

    <logger name="org.hibernate.SQL">  

        <level value="DEBUG"/>  

        <appender-ref ref="traceLog4Debug"/>  

        <appender-ref ref="stdout"/>  

    </logger>  

      

    <logger name="org.hibernate">  

        <level value="error"/>  

        <appender-ref ref="traceLog4Debug"/>  

        <appender-ref ref="stdout"/>  

    </logger>  

      

    <logger name="org.springframework">  

        <level value="error"/>  

        <appender-ref ref="traceLog4Debug"/>  

        <appender-ref ref="stdout"/>  

    </logger>  
</log4j:configuration> 

 只不过是在配置appender的时候配置了一个LevelRangeFilter的filter,并配置LevelMax与LevelMin(最大最小级别),加个测试类:

Java代码 :
package com.javaeye.paopaohou;  
  
import org.apache.log4j.Logger;  
  
public class TestLog4j {  
  
    private static final Logger log = Logger.getLogger(TestLog4j.class);  
    /** 
     * 测试log4j不同级别日志分文件记录 
     * 
     */  
  
    public static void main(String[] args) {  
        log.debug("debug...");  
        log.info("info...");  
        log.warn("warn...");  
        log.error("error...");  
  
    }  
  
}  

用log4j.properties配置时,记录还是有问题,

log4j.rootLogger=INFO,console,info,warn,error,fatal 

log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.Encoding=GBK 
log4j.appender.console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}]  [ Class = %C | Method = %M | Line = %L ] | %m |%n 

log4j.logger.info=info 
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.info.layout=org.apache.log4j.PatternLayout 
log4j.appender.info.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}]  [ Class = %C | Method = %M | Line = %L ] | %m |%n 
log4j.appender.info.datePattern='.'yyyy-MM-dd 
log4j.appender.info.Threshold=INFO 
log4j.appender.info.append=true 
log4j.appender.info.Encoding=GBK 
log4j.appender.info.File=D:/log/bpsoft_info.log 

#log4j.logger.debug=debug 
#log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender 
#log4j.appender.debug.layout=org.apache.log4j.PatternLayout 
#log4j.appender.debug.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}]  [ Class = %C | Method = %M | Line = %L ] | %m |%n 
#log4j.appender.debug.datePattern='.'yyyy-MM-dd 
#log4j.appender.debug.Threshold=DEBUG 
#log4j.appender.debug.append=true 
#log4j.appender.debug.Encoding=GBK 
#log4j.appender.debug.File=D:/log/bpsoft_debug.log 

log4j.logger.warn=warn 
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.warn.layout=org.apache.log4j.PatternLayout 
log4j.appender.warn.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}]  [ Class = %C | Method = %M | Line = %L ] | %m |%n 
log4j.appender.warn.datePattern='.'yyyy-MM-dd 
log4j.appender.warn.Threshold=WARN 
log4j.appender.warn.append=true 
log4j.appender.warn.Encoding=GBK 
log4j.appender.warn.File=D\:/log/bpsoft_warn.log 

log4j.logger.error=error 
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.error.layout=org.apache.log4j.PatternLayout 
log4j.appender.error.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}]  [ Class = %C | Method = %M | Line = %L ] | %m |%n 
log4j.appender.error.datePattern='.'yyyy-MM-dd 
log4j.appender.error.Threshold=ERROR 
log4j.appender.error.append=true 
log4j.appender.error.Encoding=GBK 
log4j.appender.error.File=D\:/log/bpsoft_error.log 

log4j.logger.fatal=fatal 
log4j.appender.fatal=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.fatal.layout=org.apache.log4j.PatternLayout 
log4j.appender.fatal.layout.ConversionPattern=[%p]  [%d{yyyy-MM-dd HH\:mm\:ss}]  [ Class \= %C | Method \= %M | Line \= %L ] | %m |%n 
log4j.appender.fatal.datePattern='.'yyyy-MM-dd 
log4j.appender.fatal.Threshold=FATAL 
log4j.appender.fatal.append=true 
log4j.appender.fatal.Encoding=GBK 
log4j.appender.fatal.File=D:/log/bpsoft_fatal.log

------------------------

 

-----------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值