在这里引用帖子后,我能够成功配置使用log4j extras jar并创建压缩日志文件。但是,当我打开压缩文件时,它会抛出一个错误,指示它是一个无效的zip文件。下面是我的log4j配置。正如您所看到的,我正在尝试每分钟创建一个日志文件并将其压缩。我在这个配置文件中做错了吗?请指教。
<appender name="EventLogger" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="ActiveFileName" value="C:/EventLogs/log" />
<param name="FileNamePattern" value="C:/EventLogs/log%d{yyyy-MM-dd-HH-mm}.zip" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS}\t%m%n" />
</layout>
</appender>
编辑:发现可以使用winrar而不是winzip打开/提取文件
答案 0 :(得分:0)
也许不是同一个根本原因,但我的相似 - 我的文件按照我的TimeBasedRollingPolicy滚动但是当我试图打开它们时,我收到的错误是它们是无效的zip文件。
原来他们根本没有拉链。根据FileNamePattern,文件已重命名为* .zip,但未进行压缩。
在log4j源代码TimeBasedRollingPolicy.java中,我们看到:
...
if (lastFileName.endsWith(".gz")) {
suffixLength = 3;
} else if (lastFileName.endsWith(".zip")) {
suffixLength = 4;
}
...
if (suffixLength == 4) {
compressAction =
new ZipCompressAction(
new File(lastBaseName), new File(lastFileName), true);
}
...
我的log4j.properties文件在我的FileNamePattern中的.zip后面有尾随空格,因此长度不是3或4.
我对log4j extras团队的建议是: