我正在使用log4j滚动文件附加器与压缩设施。每小时它滚动文件和压缩它。有时它只是无法压缩。所以我们有一个解压缩的日志文件,也有一个压缩的日志文件与相同的名称,但零字节。什么可能的原因。这是配置:
<RollingFile name="stat-log" fileName="${stat-log}"
filePattern="${stat-log}.%d{yyyy-MM-dd-HH}.gz">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
我在类路径中添加了apache-log4j-extras-1.2.17.jar,log4j版本为2.5
还有一件事,日志文件是巨大的,压缩失败,有一个30 GB大小的日志文件。
1条答案
按热度按时间rslzwgfq1#
请参阅https://github.com/apache/logging-log4j2/blob/5edf43758f104affad9842753e66be173fc4d68a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java#L439和https://github.com/apache/logging-log4j2/blob/5edf43758f104affad9842753e66be173fc4d68a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/ZipCompressAction.java
zip操作是作为异步操作完成的,因此日志记录可以在文件被压缩的同时继续进行。由于这些异步操作可以被终止,或者如果发生异常,则不进行原始文件的压缩和移除。大多数这些事情都有日志记录,所以如果你没有看到日志消息,那么可能是它仍然在压缩那个巨大的文件,而日志记录继续。