2010-10-28 253 views
1

我在我的应用程序中使用Log4j,并且使用Log4j的库也将它们的日志输出到我创建的日志文件中。我已经创建了appender将一个库的日志重定向到“other.log”文件,但是其他库仍然记录到我的主“info.log”文件中。Log4j - 排除某些类的日志记录

这是我的log4j.properties。请注意,最后,我为图书馆alibrary.apackagemyproject.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: [email protected] 
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”?

回答

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。