0

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 アペンダーに送られることです。加法性を無効にした場合と無効にした場合の両方を試しましたが、違いはありませんでした。

何か案は?

4

1 に答える 1

0

これを試してみてください。

それはあなたを助けるかもしれません

注:%X {userName}-これは、マップされた診断コンテキスト(MDC)からデータをフェッチする方法です。

%X {userName}に注意してください-これは、マップされた診断コンテキスト(MDC)からデータをフェッチする方法です

log4j.appender.consoleAppender.layout.ConversionPattern =%-4r [%t]%5p%c%x-%m-%X {userName}%n

log4j.rootLogger = DEBUG、consoleAppender

于 2013-03-16T16:53:50.330 に答える