【发布时间】:2013-03-16 15:50:51
【问题描述】:
我希望有 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 附加程序。我尝试了禁用和不禁用可加性,但没有区别。
有什么想法吗?
【问题讨论】:
-
大声笑,如果您使用正确的前缀会有所帮助。 'log4j.logger' 而不是 'log4g.logger' :)
标签: log4j