是否可以使用Log4J仅记录一个级别的消息

时间:2010-05-04 07:03:18

标签: java logging log4j

如果我将日志级别设置为DEBUG,则将记录/打印所有日志级别为> = DEBUG的消息。 但是我可以将日志级别设置为仅DEBUG,以便打印仅具有DEBUG的日志级别的消息。或者可以给出一个范围,例如打印日志级别为> = DEBUG但是< ERROR?

2 个答案:

答案 0 :(得分:8)

也许你可以使用LevelMatchFilter?

  

在某些情况下,您必须根据级别将日志写入不同的输出。如何通过简单配置Log4j来完成?下面有一些方法。

http://wiki.apache.org/logging-log4j/LogToAppenderByLevel

答案 1 :(得分:1)

正如Jarle所说,你必须使用 LevelMatchFilter 。 我将通过一个简单的考试来证明它:

log4j.rootLogger = WARN, admin 
log4j.appender.admin=org.apache.log4j.rolling.RollingFileAppender
        log4j.appender.admin.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
        log4j.appender.admin.rollingPolicy.FileNamePattern = Files\\TestLevels-%d{dd-MM-yyy}.txt
        log4j.appender.admin.layout = org.apache.log4j.PatternLayout
        log4j.appender.admin.layout.ConversionPattern = Date: %d{dd-MM-yyyy} Time: %d{HH:mm:ss} Message [%m]%n
        log4j.appender.admin.filter.01=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.01.LevelToMatch=FATAL
        log4j.appender.admin.filter.01.AcceptOnMatch=false
        log4j.appender.admin.filter.02=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.02.LevelToMatch=ERROR
        log4j.appender.admin.filter.02.AcceptOnMatch=true
        log4j.appender.admin.filter.03=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.03.LevelToMatch=WARN
        log4j.appender.admin.filter.03.AcceptOnMatch=false

在我的源代码中,我只将 ERROR 消息附加到名为TestLevels.txt的文件