java - log4j 配置不适用于特定类

标签 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。我错过了什么?

最佳答案

非常感谢您的提示。这为我指明了正确的解决方案。显然该库的作者将他们的记录器定义为类似 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 

这解决了问题。

关于java - log4j 配置不适用于特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396318/

相关文章:

java - 如何修复错误 : 'Could not load library ' toscomm': no toscomm in java. library.path'?

java - Spring boot Scheduler是随机执行的,而不是根据fixedDelay

java - 我们可以根据内容更改 log4j 日志记录级别吗

scala - 如何禁用 SBT 中特定依赖项的日志记录?

slf4j - logback 外部化

Java-并发和交错

java - 在 List 上调用 .sort 时出现 AbstractList UnsupportedOperationException

java - 在异常情况下在所有级别上记录一些过去的日志消息,在正常情况下登录信息级别

java - log4j 相对文件路径

java - 卡夫卡 : How do I enable client logging?