log4j を使用して複数のログ ファイルに書き込むと、ログ メッセージが重複するという問題が発生します。
現在、ファイル内のfoobarINFOという名前の特定のロガーのレベル データ (およびそれ以上) をログに記録し、次にファイル内のすべてのロガーのすべてのレベル ログ メッセージ (およびそれ以上)をログに記録しようとしています。foo.logWARNbar.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 つ以上のログ ファイルがあります。