additivity="false" 與root關系


我在log4j.xml文件中配置了多個appender,但在logger中使用的時候,如果沒有在<root>標簽中配置有的appender,根本不生效。但是如果在<root>中配置了,而在logger中都沒有配置的appender也會調用到。這會導致日志重復輸出。求大蝦指點,如何可以是一個logger只調用其中的某個appender?

 

將logger中的 additivity 屬性配置為 false,則這個logger不會將日志流反饋到root中。

可以達到以logger中配置的appender方式來輸出日志而其他地方輸出的目的,看配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< appender  name = "DEMO"  class = "com.XXXXX.RollingFileAppender" >
     < param  name = "file"  value = "${loggingRoot}/xxx.log"  />
     < param  name = "append"  value = "true"  />
     < param  name = "encoding"  value = "GB2312"  />
     < param  name = "threshold"  value = "info"  />
     < param  name = "MaxFileSize"  value = "50MB"  />
     < param  name = "MaxBackupIndex"  value = "10"  />
     < layout  class = "org.apache.log4j.PatternLayout" >
         < param  name = "ConversionPattern"  value = "%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n"  />
     </ layout >
</ appender >
< logger  name = "XXXX.XXXX.XXXX"  additivity = "false" >
     < level  value = "${loggingLevel}"  />
     < appender-ref  ref = "DEMO"  />
</ logger >

root的作用是收集下面所有反饋上來的信息流並根據配置在root中appender進行輸出,只要你在looger中配置了additivity="false",就不會反饋到root中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM