2 つの異なる log4j ConsoleAppenders を異なるレイアウトで定義したいと考えています。私は次のことを試しました:
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{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.stdoutMDC=org.apache.log4j.ConsoleAppender
log4j.appender.stdoutMDC.Target=System.out
log4j.appender.stdoutMDC.layout=org.apache.log4j.PatternLayout
log4j.appender.stdoutMDC.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L (hibernateLoadPlanWalkPath->%X{hibernateLoadPlanWalkPath}) - %m%n
ただし、これらのアペンダーを使用しようとすると、問題が発生します。最初のアペンダーをルートにアタッチしてから、2 つ目のアペンダーを特定の祖先ロガーにアタッチしようとします。
log4j.rootLogger=info, stdout
log4g.logger.org.hibernate.loader.plan=trace, stdoutMDC
log4g.additivity.org.hibernate.loader.plan=false
log4g.logger.org.hibernate.persister.walking=trace, stdoutMDC
log4g.additivity.org.hibernate.persister.walking=false
私が抱えている問題は、これらの祖先ロガーの両方からのメッセージが、stdoutMDC アペンダーではなく、stdout アペンダーに送られることです。加法性を無効にした場合と無効にした場合の両方を試しましたが、違いはありませんでした。
何か案は?