处理Logback的压缩滚动文件

时间:2015-08-06 08:55:47

标签: java synchronization logback

我已经配置了LogBack,以便每小时翻转一次,创建一个文件,例如log.20150806-10.log.zip。

在一个特殊的线程中,我想定期检查是否有新的翻转文件,如果是,请将它们上传到某处然后删除它们。

查看LogBack Compressor.java的来源,它只是打开目标zip文件,开始写入并关闭它。

我认为我的线程可能会在Compressor完成写入之前发现该文件。

如果我不使用压缩,这可能不会成为问题,因为那时只有文件重命名。

如何同步?

appender和处理线程都在同一个JVM中运行。

1 个答案:

答案 0 :(得分:1)

这是我如何处理这个问题。

  • 我停止使用LogBack的压缩功能。这样,LogBack通过重命名原始日志文件来创建新的翻转文件。在大多数平台上重命名文件是原子的。

  • 在一个单独的线程中,我正在检查新文件是否出现在目录中。一旦我看到一个新文件,我就可以立即处理它。

  • 我自己正在进行ZIP压缩。