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

但是,当我尝试使用这些附加程序时,我遇到了问题。我将第一个附加程序附加到根目录,然后尝试将第二个附加程序附加到某些祖先记录器:

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

我遇到的麻烦是,来自这两个祖先记录器的消息最终都进入了 stdout 附加程序,而不是stdoutMDC 附加程序。我尝试了禁用和不禁用可加性,但没有区别。

有任何想法吗?

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 = 调试,consoleAppender

于 2013-03-16T16:53:50.330 回答