我有一个类,我想将其日志输出重定向到文件。但无论我做什么,它总是输出到控制台。这是我的 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。我错过了什么?
最佳答案
非常感谢您的提示。这为我指明了正确的解决方案。显然该库的作者将他们的记录器定义为类似 FooLogging 的东西。所以我改变了这两行:
log4j.logger.io.opentracing.impl.LoggingEventBuilder=INFO, ul
log4j.additivity.io.opentracing.impl.LoggingEventBuilder=false
到
log4j.logger.FooLogging=INFO, ul
log4j.additivity.FooLogging=false
这解决了问题。
关于java - log4j 配置不适用于特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396318/