无法使用winzip打开log4j压缩文件

时间:2014-05-26 13:12:32

标签: java log4j rollingfileappender

在这里引用帖子后,我能够成功配置使用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打开/提取文件

1 个答案:

答案 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团队的建议是:

  • 在文件名
  • 上使用trim()
  • 不要重命名为例如zip,除非实际发生压缩