停止从依赖项向控制台显示记录器输出

时间:2014-10-09 13:56:37

标签: java xml logging configuration log4j

我是log4j的新手,因此请求SO帮助。

在我的Java项目中,我有几个Maven依赖项,它使控制台输出与冗余日志信息混乱。我想禁用这样的日志记录。

我理解将“additivity”属性设置为“false”可能有所帮助。但无法正常使用它。

我正在寻找一个log4j.xml配置,它只会从我的项目中打印日志输出(警告,错误..),而不是从任何依赖项打印。

2 个答案:

答案 0 :(得分:1)

将所有第三方lib日志重定向到目标appender中,为您的应用使用另一个appender

log4j.rootLogger=debug,thirdPartyLibAppender 
log4j.logger.com.yourapp=debug, yourAppAppender
log4j.additivity.com.yourapp=false

# define where do you want third party lib logs to land : in a file
log4j.appender.thirdPartyLibAppender=org.apache.log4j.FileAppender
log4j.appender.thirdPartyLibAppender.append=true
log4j.appender.thirdPartyLibAppender.file=/tmp/app.log
log4j.appender.thirdPartyLibAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.thirdPartyLibAppender.layout.ConversionPattern=[%p] %c:%m%n

# define where do you want your app logs to land : stdout
log4j.appender.yourAppAppender=org.apache.log4j.ConsoleAppender
log4j.appender.yourAppAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.yourAppAppender.layout.ConversionPattern=[%p] %c:%m%n

将additivity设置为false会阻止您的应用日志以thirdPartyLibAppender

结尾

在这2行中,不要忘记用顶级包名替换com.yourapp

log4j.logger.com.yourapp=debug, yourAppAppender
log4j.additivity.com.yourapp=false

答案 1 :(得分:0)

看起来log4j2.xml覆盖了所有其他配置。截至目前,我已将此依赖关闭。也许log4j2 > log4j因此问题。还有xml > properties,就像我在某处看到的那样。