2016-04-15 21 views
0

私はlog4j 1.2.17を使用しています。私はメッセージがコンソールとログファイルに書き込まれるようにlog4j.propertiesを設定しようとしました。コンソールへのメッセージの書き込みは問題ありません。ログメッセージごとにログファイルに書き込まれるエントリは1つのみです。ただし、重複したメッセージがログファイルに書き込まれています。言い換えれば、ログに書き込まれるすべてのINFOに対して、2回書き込まれます。私はこれを制御するために加算力を使ってみましたが、うまくいかないようです。この動作を修正するには、私は何をする必要がありますか?log4j:設定により重複したメッセージがログファイルに書き込まれる

を改訂

log4j.rootLogger=ERROR, R, C 

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R.File=${catalina.base}/logs/storefrontPing.log 
log4j.appender.R.DatePattern='.'yyyy-MM-dd 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d %t [%-5p] %c - %m%n 
log4j.appender.R.Append = true 
log4j.additivity.R = false 

log4j.appender.C=org.apache.log4j.ConsoleAppender 
log4j.appender.C.layout=org.apache.log4j.PatternLayout 
log4j.appender.C.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n 
log4j.appender.C.Target=System.out 
log4j.additivity.C = false 

log4j.logger.org.apache=ERROR, R 
log4j.logger.org.apache=ERROR, C 

log4j.logger.com.aktion.storefront.ping=INFO, C 
log4j.logger.com.aktion.storefront.ping=INFO, R 

私は次のように私のlog4j.propertiesファイルを変更しました。ログメッセージはコンソールに書き込まれますが、ログファイルには何も書き込まれません。

log4j.rootLogger=ERROR, R, C 

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R.File=${catalina.base}/logs/storefrontPing.log 
log4j.appender.R.DatePattern='.'yyyy-MM-dd 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d %t [%-5p] %c - %m%n 
log4j.appender.R.Append = true 

log4j.appender.C=org.apache.log4j.ConsoleAppender 
log4j.appender.C.layout=org.apache.log4j.PatternLayout 
log4j.appender.C.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n 
log4j.appender.C.Target=System.out 

log4j.logger.com.aktion.storefront.ping=INFO 

答えて

1

のAppenderの加法はアペンダではなくロガー(https://logging.apache.org/log4j/1.2/manual.html#additivity

すでにルートロガーにあなたのアペンダを追加しましたので、あなたが後でそれらを再度追加する必要はありません上に構成されていません。

log4j.logger.org.apache=ERROR 
log4j.logger.org.apache=ERROR 

log4j.logger.com.aktion.storefront.ping=INFO 
log4j.logger.com.aktion.storefront.ping=INFO 

そして、あなたがルートロガーからorg.apacheロガーにログレベルを変更しないので、あなたも、これらの省略可能性があります:あなたは目的のログレベルを使用して、追加のロガーを定義する必要があり

log4j.additivity.R = false 
log4j.additivity.C = false 

および追加:あなたのケースで、次の行を削除して

#log4j.logger.org.apache=ERROR 
#log4j.logger.org.apache=ERROR 

log4j.logger.com.aktion.storefront.ping=INFO 
log4j.logger.com.aktion.storefront.ping=INFO 
+0

変更を試みました。これで、コンソールにログINFOメッセージが書き込まれましたが、ログファイルには何も書き込まれませんでした。私は修正されたlog4j.propertiesファイルを今私の質問に含めました。私は間違ったことをしましたか? –

+0

私の悪いです。問題は、Eclipse内でローカルのTomcatサーバーを定義していたことです。これは機能しています。ありがとう! –

0

additivityは、アペンダない、ロガーレベルで設定する必要があります

log4j.additivity.org.apache=false 
関連する問題