我有一个类,我想将其日志输出重定向到一个文件。但无论我做什么,它总是输出到控制台。这是我的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。我错过了什么?
答案 0 :(得分:2)
非常感谢提示。这指出了正确的解决方案。显然,该库的作者将他们的记录器定义为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
这解决了这个问题。
答案 1 :(得分:0)
您已将logger定义为此类private static final Logger logger = LoggerFactory.getLogger(LoggingEventBuilder.class);
,并调用记录器以记录链接logger.info("message");
。