【问题标题】:log4j: log4j:ERROR Attempted to append to closed appender named [stdout]log4j:log4j:错误尝试附加到名为 [stdout] 的已关闭附加程序
【发布时间】:2011-05-16 12:00:02
【问题描述】:

“尝试附加到封闭的附加程序”是什么意思?

以下是我的 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 查询,但出现上述错误。我错过了什么吗?

【问题讨论】:

  • 我遇到了同样的问题。我的解决方案是将 JSTL 1.0 升级到 1.2

标签: log4j


【解决方案1】:

当我的 log4j.xml 包含两个同名的记录器(又名类别)链接到同一个附加程序时,我收到了这条消息。

【讨论】:

  • 哇。我有一个重复的记录器,这个问题让我卡了一天多。我什至读了这篇文章,并不认为这是我的问题,但我只是检查得不够仔细。伙计,你会认为会有某种警告。非常感谢!
  • 如果&lt;logger&gt; 元素和&lt;root&gt; 元素链接到同一个附加程序,也会出现问题
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    在我的例子中,我在同一个包名上使用了 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2014-08-07
      • 2019-06-22
      相关资源
      最近更新 更多