我只定义了两个记录器:一个是根记录器,另一个是普通记录器。 我认为那时普通记录器会成为root logger的直接子项吗? 如果是,那么如何防止普通记录器的appender打印的日志冒泡到root logger的appender?
根据文件:
但是,如果记录器C的祖先说P,则设置加性标志 为了假,那么C的输出将被定向到C中的所有appender 和它的祖先,包括P,但不包括任何的appenders P的祖先。
表示将其可加性设置为false的记录器将其所有日志都冒泡到 它的父母但不高于它。我是对的吗?
如果是,那么设置我的通用记录器的可加性标志将无济于事(实际上它没有:))并且日志仍然打印到普通记录器和根记录器。如何防止这种情况?
答案 0 :(得分:4)
#root logger config starts
log4j.rootLogger=INFO, RA
log4j.appender.RA=org.apache.log4j.RollingFileAppender
log4j.appender.RA.File=/Data/var/logs/root.log
log4j.appender.RA.MaxFileSize=100KB
# Keep one backup file
log4j.appender.RA.MaxBackupIndex=1
log4j.appender.RA.layout=org.apache.log4j.PatternLayout
log4j.appender.RA.layout.ConversionPattern=%p %d - %m%n
# root config logger ends
#ico common logger config starts
log4j.logger.com=INFO, COMMONA
log4j.appender.COMMONA=org.apache.log4j.RollingFileAppender
log4j.additivity.com=false
log4j.appender.COMMONA.File=/Data/var/logs/common_ico.log
log4j.appender.COMMONA.MaxFileSize=100KB
# Keep one backup file
log4j.appender.COMMONA.MaxBackupIndex=1
log4j.appender.COMMONA.layout=org.apache.log4j.PatternLayout
log4j.appender.COMMONA.layout.ConversionPattern=[%x]%p %d - %m%n
#ico common logger config ends
以上配置有效。我使用log4j.additivity.COMMONA=false
代替log4j.additivity.com=false
答案 1 :(得分:2)
使用此配置
<appender name="a2" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="common %m%n" />
</layout>
</appender>
<appender name="a1" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="root %m%n" />
</layout>
</appender>
<logger name="common" additivity="false">
<appender-ref ref="a2" />
</logger>
<root>
<priority value="debug" />
<appender-ref ref="a1" />
</root>
此
Logger.getLogger("common").debug("1111");
打印
common 1111