要说log4j的输出原则,就要先说下log4j的继承关系
继承关系:
Log4J提供了一个root的Logger,它是所有Logger组件的“祖先”,它永远存在,且不能通过名字检索或引用,通过Logger.getRootLogger()方法取得它。可在配置文件中方便地配置存在继承关系的Logger组件,凡是在符号“.”后面的组件都会成为在符号“.”前面的Logger组件的子类。例如:- log4j.apache.myLogger=WARN- log4j.apache.myLogger.mySonLogger=,file-以上代码中, mySonLogger是myLogger的子类Logger组件。
输出过程:
1、寻找这个类所在的logger(没找到,默认为root),任何一个类只会和一个logger对应。
2、log4j会在自己对应的appender和他父类们的appender中输出日志信息。
如果不想在对应的父类没的appnder中输出日志方法如下:
将logger中的 additivity 属性配置为 false,则这个logger不会将日志流反馈到他的父类没的appender中。
demo:
<logger name="XXXX.XXXX.XXXX" <span style="background-color: rgb(255, 255, 153);">additivity="false"</span>>
<level value="${loggingLevel}" />
<appender-ref ref="DEMO" />
</logger>