2017-06-06 89 views
0

我有一個類,我想將其日誌輸出重定向到一個文件。但不管我做什麼,它總是輸出到控制檯。這是我的log4j.properties文件。log4j配置不適用於特定類

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。我錯過了什麼?

+1

你是如何在LoggingEventBuilder類中定義'logger'的? –

+0

我沒有該類的代碼。這是第三方圖書館。 – fhcat

+0

如果它是第三方類,你怎麼知道它使用log4j?它可能正在使用其他API並且不會受到log4j conf的影響 –

回答

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 

和解決的問題。

0

您已將記錄器定義爲這樣的類,private static final Logger logger = LoggerFactory.getLogger(LoggingEventBuilder.class);和記錄鏈接的記錄器logger.info("message");