log4j を使用して複数のログ ファイルに書き込むと、ログ メッセージが重複するという問題が発生します。
現在、ファイル内のfoobarINFO
という名前の特定のロガーのレベル データ (およびそれ以上) をログに記録し、次にファイル内のすべてのロガーのすべてのレベル ログ メッセージ (およびそれ以上)をログに記録しようとしています。foo.log
WARN
bar.log
この結果、重複したログ メッセージがfoo.log
ファイルに書き込まれ (各行が 2 回記録されました)、簡単な調査の結果、これを修正するための提案log4j.additivity.foobar=false
はプロパティ ファイルに追加することであることがわかりました。
これの問題は、重複する行は停止しますが、 foobarロガーWARN
からのメッセージがファイルに書き込まれないことです。bar.log
私のlog4jプロパティファイルは次のとおりです。
log4j.rootLogger = WARN, FOO, BAR
log4j.logger.foobar = INFO, FOO
log4j.additivity.foobar = false
log4j.appender.FOO = org.apache.log4j.RollingFileAppender
log4j.appender.FOO.layout = org.apache.log4j.PatternLayout
log4j.appender.FOO.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.FOO.File = foo.log
log4j.appender.BAR = org.apache.log4j.RollingFileAppender
log4j.appender.BAR.layout = org.apache.log4j.PatternLayout
log4j.appender.BAR.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.BAR.File = bar.log
ログメッセージを両方のログファイルに書き込んで(additivity
プロパティの設定を開始する前に行っていたように)、ログメッセージの重複を防ぐ方法を知っている人はいますか?
これは問題の簡単な要約であることに注意してください。実際のシナリオでは、複数のロガーと 3 つ以上のログ ファイルがあります。