0

我们在大量日志记录下遇到 log4j 日志记录问题。 我们会定期丢失文件中的一些日志(每 1 小时约 4-20 分钟),这些日志会被推出和压缩。

配置:

<appender name="MY_LOG" class="org.apache.log4j.appender.TimeAndSizeRollingAppender">
    <param name="File"   value="../logs/mylog.log" />
    <param name="DatePattern" value=".yyyy-MM-dd"/>
    <param name="MaxFileSize" value="40MB"/>
    <param name="MaxRollFileCount" value="100"/>
    <param name="ScavengeInterval" value="300000"/>
    <param name="encoding" value="UTF-8" />
    <param name="CompressionAlgorithm" value="ZIP"/>
    <param name="CompressionMinQueueSize" value="5"/>
    <param name="CompressionThreadPriority" value="1"/>
    <param name="CompressionLevel" value="1"/>
    <param name="CompressionUseBlockingQueue" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p %22.22t| %22.22c{1}| %m%n"/>
    </layout>
</appender>

添加属性<param name="CompressionUseBlockingQueue" value="true"/>是为了防止日志丢失。我们认为(现在仍然如此)当文件(当​​有 5 个临时文件时)被合并和压缩时,日志会丢失。他们可能会以某种方式被覆盖。但是,此属性不起作用。

我不确定在哪里寻找问题,或者如何更改配置,因此日志不会丢失或被覆盖。

有什么建议我们可以尝试吗?

谢谢

4

1 回答 1

1

您可以尝试将日志的副本创建到某个临时位置(或在同一位置,如果空间不是限制);然后压缩它。

时间点压缩可能会发生,记录器缓冲区正在尝试写回并失败。由于 log4j 静默失败,因此很难追踪此类错误。

于 2013-09-09T07:50:35.437 回答