为什么我在Log4J中得到双倍的输出?

时间:2013-06-26 18:31:47

标签: java spring log4j

我正在开发一个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>

2 个答案:

答案 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"

将记录器属性生成双输出。