2013-03-16 30 views
0

我想用不同的佈局定義2個不同的log4j ConsoleAppenders。我試過以下內容:可以用2個ConsoleAppenders配置log4j,每個都有不同的佈局?

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時,我遇到了問題。我具有連接到根第一附加器,然後嘗試在第二附連到某些祖先記錄程序:

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 appender。我嘗試了和不禁用可加性,但沒有區別。

任何想法?

+0

大聲笑,幫助如果你使用正確的前綴。 'log4j.logger'而不是'log4g.logger':) – 2013-03-18 14:22:38

回答

0

請試試這個。

它可以幫助了你

注:%X {用戶名} - 這是你如何獲取從映射診斷上下文(MDC)

注意到%X {用戶名}數據 - 這是怎麼了取從映射診斷上下文(MDC)

log4j.appender.consoleAppender.layout.ConversionPattern =%-4R [%T]%5p的%C%×數據 - %間 - %X {USERNAME}%正

log4j.rootLogger = DEBUG,consoleAppender

+0

那根本不是我所問的。 MDC值只與某組日誌類別有關。事實上,如果我將相同的確切模式佈局移動到附加到根的appender上,它可以正常工作。 – 2013-03-16 18:52:40

相關問題