最近在日志打印的时候因为某类日志打印量特别大,体积又比较大,比较特殊需要分离,所以配置了一个独立的日志打印logger_B. 然后遇到一个小问题, 项目是个java springboot项目,部署在linux系统, 日志输出到独立logger_B生成的文件时, 也同步打印去了.out文件, 重复打印不说, 也导致out体积膨胀过快过大,造成比较大的不变.
这是独立logger的配置文件.
<logger name="logger_B" level="INFO" additivity="true">
<appender-ref ref="logger_B_FILE"/>
</logger>
刚开始没发现是什么问题, 看了其他logger也是如此配置,没注意核对官方API,望文生义的以为 "additivity"是追加的意思. 后面经过某余同学指正, additivity是是否会在父Logger的appender里输出的意思。
官方API查证了下:
“Log4j中additivity的属性为true/false,它是子Logger 是否继承父Logger 的输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。"
小结
1. loj4j默认情况下additivity为true
2. 某个logger的additivity设置为false,表示log只打印到本log的appender中,而不再打印到其父logger的appender。