我想要使用不同的布局定义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
然而,当我尝试使用这些appender时,我遇到了问题。我有第一个附加到root的appender然后尝试将第二个附加到某些祖先记录器:
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 appender 而不是 stdoutMDC appender。无论是否禁用可加性,我都试过了,但没有区别。
有什么想法吗?
答案 0 :(得分:0)
请试试这个。
它可能有助于你
注意:%X {userName} - 这是从映射诊断上下文(MDC)获取数据的方法
log4j.appender.consoleAppender.layout.ConversionPattern =%-4r [%t]%5p%c%x - %m - %X {userName}%n
log4j.rootLogger = DEBUG,consoleAppender