过滤log4j appender只包含来自类的消息

时间:2015-08-06 21:46:23

标签: class filter log4j appender

我正在尝试创建一个log4j文件appender,它只包含特定类的消息。这是一个示例消息:

2015-08-06 16:41:43,473 [pool-3-thread-8] INFO ACME.log-新测试消息

我希望ACME.log的所有日志消息都转到特定的appender。以下是我目前在属性文件中无法正常工作的代码。

log4j.appender.myLog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.myLog.File = /opt/netiq/idm/apps/tomcat/logs/acme.log
log4j.appender.myLog.layout = org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.myLog.filter.filter.ID=ACME.log
log4j.appender.myLog.filter.ID.levelMin=INFO
log4j.appender.myLog.filter.ID.levelMax=ERROR
log4j.appender.myLog.filter.2 = org.apache.log4j.varia.DenyAllFilter

1 个答案:

答案 0 :(得分:1)

如果您使用的是log4j 1.x,我们强烈建议您使用org.apache.log4j.rolling.RollingFileAppender 1 而不是org.apache.log4j.DailyRollingFileAppender(可能)丢失消息,Bug 43374)。

所以你的appender的配置可以是:

log4j.appender.myLog=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.myLog.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.myLog.rollingPolicy.fileNamePattern=/path/acme%d{yyyy-MM-dd}.log
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern=%d %-5p (%c.java:%L).%M - %m%n
log4j.appender.myLog.filter.A=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.myLog.filter.A.LevelMin=INFO    
log4j.appender.myLog.filter.A.LevelMax=ERROR
log4j.appender.myLog.filter.A.AcceptOnMatch=true

如果您只想要一个类的日志(例如com.company.MyClass),请按如下方式指定:

log4j.logger.com.company.MyClass=TRACE, myLog

备注

  1. 在这种情况下,您需要添加相应的jar(apache-log4j-extras-1.2.17.jar)。