Log4j2日志大小累积而不是翻转

时间:2013-11-11 14:05:54

标签: multiple-instances log4j2

我尝试过以下配置,发现日志轮换按预期发生,并为每次轮换创建了一个新的日志文件。

但是当有多个服务器实例正在运行时指向同一个日志文件。一旦日志达到限制,日志就会备份,但是新日志会被写入同一个旧文件,而不是新文件(0KB),因此会占用文件大小。

看起来在多个实例中,文件被两个实例锁定以进行写入,回滚不正确。

任何解决方法/建议?为每个实例创建一个新文件并不是一个真正的选择。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="" packages="">
    <Appenders>
        <RollingRandomAccessFile name="RollingRandomAccessFile"
            fileName="../logs/ws_new.log" append="false" filePattern=".../logs/ws_new-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 KB" />
            </Policies>
            <DefaultRolloverStrategy max="3"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <root level="error">
            <AppenderRef ref="RollingRandomAccessFile" />
        </root>

         <Logger name="org.exm.test" level="trace" additivity="false">
            <AppenderRef ref="RollingRandomAccessFile"/>
        </Logger>


    </Loggers>


</Configuration>

1 个答案:

答案 0 :(得分:1)

Log4j不是为那种方式设计的。如果多个进程尝试写入同一个日志文件,则无法保证结果。您最终可能会丢失日志消息。

我强烈建议您为进程分配单独的日志文件。