log4j配置不适用于特定的类

时间:2017-06-06 17:31:58

标签: java log4j slf4j

我有一个类,我想将其日志输出重定向到一个文件。但无论我做什么,它总是输出到控制台。这是我的log4j.properties文件。

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %C %l %-5p %c{1}:%L - %t - %m%n

log4j.logger.io.opentracing.impl.LoggingEventBuilder=INFO, ul
log4j.additivity.io.opentracing.impl.LoggingEventBuilder=false
log4j.appender.ul=org.apache.log4j.RollingFileAppender
log4j.appender.ul.maxFileSize=50MB
log4j.appender.ul.file=${catalina.home}/logs/mylogs.log
log4j.appender.ul.layout=org.apache.log4j.PatternLayout
log4j.appender.ul.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %t - %m%n

这里io.opentracing.impl.LoggingEventBuilder是我想要重定向的输出的类。有趣的是,我尝试使用相同的代码模式将其他类的输出重定向到文件,并且它有效。仅适用于此课程,它不起作用。

我正在使用slf4j-log4j12。我错过了什么?

2 个答案:

答案 0 :(得分:2)

非常感谢提示。这指出了正确的解决方案。显然,该库的作者将他们的记录器定义为FooLogging。所以我改变了这两行:

log4j.logger.io.opentracing.impl.LoggingEventBuilder=INFO, ul 
log4j.additivity.io.opentracing.impl.LoggingEventBuilder=fal‌​se 

log4j.logger.FooLogging=INFO, ul 
log4j.additivity.FooLogging=false 

这解决了这个问题。

答案 1 :(得分:0)

您已将logger定义为此类private static final Logger logger = LoggerFactory.getLogger(LoggingEventBuilder.class);,并调用记录器以记录链接logger.info("message");