我正在开发一个Java Spring项目,我想从每个包中记录WARNS,并且只从我的包中记录INFO。
我不知道为什么Log4J为我的包提供双线输出。
有人可以告诉我原因吗
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<logger name="com.xxxxx.mongodb">
<level value="INFO"/>
<appender-ref ref="console" />
</logger>
<root>
<priority value="WARN"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
答案 0 :(得分:2)
因为你的记录器从root logger继承了appender。
log4j状态的docs:
记录器C的日志语句的输出将转到所有的appender 在C及其祖先。这就是“appender”这个词的含义 加”。
但是,如果记录器C的祖先(比如P)具有可加性标志 设置为false,然后C的输出将定向到所有的appender C和它的祖先,包括P,但不包括任何appenders P的祖先。
记录器默认情况下将其可加性标志设置为true。
答案 1 :(得分:0)
添加
additivity="false"
将记录器属性生成双输出。