log4j:ERROR 试图追加到名为[...]的已关闭的appender。[英] log4j:ERROR Attempted to append to closed appender named [..]

本文是小编为大家收集整理的关于log4j:ERROR 试图追加到名为[...]的已关闭的appender。的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我反复在控制台上遇到以下错误

log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [FixedWindowRollingFile].

使用的log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <appender class="org.apache.log4j.rolling.RollingFileAppender" name="FixedWindowRollingFile">
        <param name="Append" value="true"/>
        <param name="ImmediateFlush" value="true"/>

        <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
            <param name="fileNamePattern" value="logs/StandardizeAccountService.%i.log"/>
            <param name="minIndex" value="1"/>
            <param name="maxIndex" value="10"/>
        </rollingPolicy>
        <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
            <param name="MaxFileSize" value="1002400"/>
        </triggeringPolicy>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %c{1}:%L - %m%n"/>
        </layout>
    </appender>

    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.SimpleLayout"/>
    </appender>

    <logger name="com.arosys" additivity="false" >
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
        <appender-ref ref="FixedWindowRollingFile"/>
    </logger>

    <root>
        <priority value="INFO"/>
        <appender-ref ref="ConsoleAppender"/>
        <appender-ref ref="FixedWindowRollingFile"/>
    </root>
</log4j:configuration>

请帮助我问题.

推荐答案

我在这里回答了类似的问题:

就我而言,我有两个log4j.properties可用于log4j:一个是通过将其放置在classPath中,另一个是通过编程加载的(使用PropertyConfigurator.configure(..)).

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

其他推荐答案

我有相同的错误:

log4j:ERROR Attempted to append to closed appender named [rollingFileAppender].

在我的log4j.xml中

我有两个登录器,具有相同的名称,例如

<logger name="java.sql.PreparedStatement" additivity="false">
    <level value="INFO"/>
    <appender-ref ref="rollingFileAppender"/>
</logger>

 <logger name="java.sql.PreparedStatement">
    <level value="INFO"/>
    <appender-ref ref="rollingFileAppender"/>
</logger>

我删除了副本,它起作用了.

其他推荐答案

一个人可以使用:

覆盖
BasicConfigurator.resetConfiguration();
PropertyConfigurator.configure(props);

本文地址:https://www.itbaoku.cn/post/1574799.html

问题描述

I am getting following errors on my console repeatedly

log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [FixedWindowRollingFile].

used log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <appender class="org.apache.log4j.rolling.RollingFileAppender" name="FixedWindowRollingFile">
        <param name="Append" value="true"/>
        <param name="ImmediateFlush" value="true"/>

        <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
            <param name="fileNamePattern" value="logs/StandardizeAccountService.%i.log"/>
            <param name="minIndex" value="1"/>
            <param name="maxIndex" value="10"/>
        </rollingPolicy>
        <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
            <param name="MaxFileSize" value="1002400"/>
        </triggeringPolicy>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %c{1}:%L - %m%n"/>
        </layout>
    </appender>

    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.SimpleLayout"/>
    </appender>

    <logger name="com.arosys" additivity="false" >
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
        <appender-ref ref="FixedWindowRollingFile"/>
    </logger>

    <root>
        <priority value="INFO"/>
        <appender-ref ref="ConsoleAppender"/>
        <appender-ref ref="FixedWindowRollingFile"/>
    </root>
</log4j:configuration>

please help me where the problem.

推荐答案

I've answered similar question here: https://stackoverflow.com/a/9973283/340290

In my case, I've two log4j.properties available to the Log4J: one via placing it in classpath and other being loaded programmatically (using PropertyConfigurator.configure(..)).

And in the two files, I've ConsoleAppender registered with same name stdout and used for same category twice (one per each properties file). Removing config or the properties file solved my issue.

其他推荐答案

I got the same error:

log4j:ERROR Attempted to append to closed appender named [rollingFileAppender].

In my log4j.xml

I have two loggers with the same name like below

<logger name="java.sql.PreparedStatement" additivity="false">
    <level value="INFO"/>
    <appender-ref ref="rollingFileAppender"/>
</logger>

 <logger name="java.sql.PreparedStatement">
    <level value="INFO"/>
    <appender-ref ref="rollingFileAppender"/>
</logger>

I removed the duplicate, it worked.

其他推荐答案

One could overwrite the configuration using:

BasicConfigurator.resetConfiguration();
PropertyConfigurator.configure(props);