Log4j - 排除某些类的日志记录

时间:2010-10-28 18:53:22

标签: log4j libraries

我在我的应用程序中使用Log4j,我使用的也使用Log4j的库也将它们的日志输出到我创建的日志文件中。我已经创建了appender来将一个库的日志重定向到“other.log”文件,但其他库继续记录到我的主“info.log”文件。

这是我的log4j.properties。请注意,最后,我为库alibrary.apackage创建了一个类别,为myproject.apackage创建了一个类别,以便库日志转到一个appender,项目日志转到另一个appender。

log4j.rootLogger=ALL,InfoAppender,OtherAppender

# AdminFileAppender - used to log messages in the admin.log file.
log4j.appender.InfoAppender=org.apache.log4j.FileAppender
log4j.appender.InfoAppender.File=info.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern= %d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
log4j.appender.InfoAppender.Threshold=DEBUG

log4j.appender.OtherAppender=org.apache.log4j.FileAppender
log4j.appender.OtherAppender.File=other.log
log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.OtherAppender.layout.ConversionPattern= %d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
log4j.appender.OtherAppender.Threshold=ALL

log4j.category.alibrary.apackage=DEBUG,OtherAppender
log4j.additivity.com.mchange.v2=false
log4j.category.myproject.apackage=ALL,InfoAppender
log4j.additivity.trackme=false

我仍然继续得到以下内容:

在“info.log”中:

...Logs that I want to be here...
Logs that I do not want to be here, that should go to "other.log". Ex.:
2010/10/28 15:29:25,667 [main] DEBUG org.apache.jasper.compiler.JspRuntimeContext  - Parent class loader is: ContextLoader@null
2010/10/28 15:29:25,668 [main] DEBUG org.apache.jasper.servlet.JspServlet  - ...
2010/10/28 15:29:25,668 [main] DEBUG org.apache.jasper.servlet.JspServlet  - IMPORTANT: Do not modify the generated servlets

在“other.log”中:

All the logs that I do not want in "info.log" are here. OK.

我的问题是:如何将所有不需要的日志(即其他库中的日志)重定向到“other.log”?

1 个答案:

答案 0 :(得分:2)

你想让OtherAppender成为rootLogger,并专门将你想要的消息推送到InfoAppender。

我将appender定义保持不变,然后像这样配置记录器:

log4j.rootLogger=ALL,OtherAppender
log4j.category.alibrary.apackage=DEBUG # will default to OtherAppender
log4j.additivity.com.mchange.v2=false
log4j.category.myproject.apackage=ALL,InfoAppender # will go to both logs
log4j.additivity.trackme=false

这会将所有内容路由到OtherAppender,只需将 myproject.apackage 中的内容路由到InfoAppender中。