我在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中。
