log4j:log4j:ERROR尝试附加到名为[stdout]的已关闭的appender

时间:2011-05-16 12:00:02

标签: log4j

“尝试追加封闭的appender”是什么意思?

以下是我的log4j.xml文件的一小部分

<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <param name="Threshold" value="TRACE" />
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p: %m%n" />
    </layout>
</appender>

<logger name="java.sql" additivity="false">
    <level value="trace" />
    <appender-ref ref="stdout" />
</logger>

我正在尝试打印一些sql查询,但是我收到了上述错误。我错过了什么吗?

3 个答案:

答案 0 :(得分:18)

当我的log4j.xml包含由于复制 - 不 - 编辑而包含两个与同一个appender相同名称的记录器(也称为类别)时,我收到此消息。

答案 1 :(得分:9)

就我而言,我有两个可用于Log4J的log4j.properties:一个通过将它放在类路径中而另一个通过编程方式加载(使用PropertyConfigurator.configure(..))。

在这两个文件中,我ConsoleAppender注册了同名stdout并用于同一类别两次(每个属性文件中有一个)。删除配置或属性文件解决了我的问题。

答案 2 :(得分:2)

就我而言,我在同一个包名上使用了2个记录器元素。删除其中一个解决了问题。

<logger name="org.activiti.engine" additivity="false">
    <level value="error" />
    <appender-ref ref="LOGFILE" />
  </logger>
  <logger name="org.activiti.engine" additivity="false">
    <level value="debug" />
    <appender-ref ref="activitiBPMLog" />
  </logger>