我们遇到了大量日志记录下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个临时文件时)被合并和压缩。他们可能会以某种方式被覆盖。但是,这个属性不起作用。
我不确定在哪里寻找问题,或者如何更改配置,因此日志不会丢失或被覆盖。
我们可能会尝试什么建议?
由于
答案 0 :(得分:1)
您可以尝试将日志副本创建到某个临时位置(如果空间不是约束,则可以在同一位置);然后拉链。
可能会发生压缩时间点正在发生的情况,记录器缓冲区正在尝试进行反向操作。由于log4j无声地失败,因此很难跟踪此类错误。