2017-06-06 7 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.FooLogging=INFO, ul 
log4j.additivity.FooLogging=false 

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

、それが問題を解決:だから私は、これらの2行を変更しました。

0

このようなクラスにロガーを定義した場合は、private static final Logger logger = LoggerFactory.getLogger(LoggingEventBuilder.class);とロギング呼び出し用の呼び出しログlogger.info("message");があります。

関連する問題