处理 Logback 的压缩翻转文件
Processing Of Logback's Compressed Rolled-Over Files
我配置了 LogBack,以便它每小时滚动创建一个文件,例如 log.20150806-10.log.zip.
在一个专栏中,我想定期检查是否有新的滚动文件,如果有,请将它们上传到某个地方,然后删除它们。
查看 LogBack Compressor.java 的源代码,它只是打开目标 zip 文件,开始写入并关闭它。
我认为我的线程可能会在 Compressor 完成写入文件之前发现该文件。
如果我不使用压缩,这可能不是问题,因为那样只会重命名文件。
如何同步?
appender 和处理线程运行在同一个 JVM 中。
这是我处理这个问题的方法。
我停止使用 LogBack 的压缩功能。这样,LogBack 通过重命名原始日志文件来创建新的滚动文件。在大多数平台上重命名文件是原子的。
在一个单独的线程中,我正在检查是否有新文件出现在目录中。一旦我看到一个新文件,我可以立即处理它。
我自己在做ZIP压缩。
我配置了 LogBack,以便它每小时滚动创建一个文件,例如 log.20150806-10.log.zip.
在一个专栏中,我想定期检查是否有新的滚动文件,如果有,请将它们上传到某个地方,然后删除它们。
查看 LogBack Compressor.java 的源代码,它只是打开目标 zip 文件,开始写入并关闭它。
我认为我的线程可能会在 Compressor 完成写入文件之前发现该文件。
如果我不使用压缩,这可能不是问题,因为那样只会重命名文件。
如何同步?
appender 和处理线程运行在同一个 JVM 中。
这是我处理这个问题的方法。
我停止使用 LogBack 的压缩功能。这样,LogBack 通过重命名原始日志文件来创建新的滚动文件。在大多数平台上重命名文件是原子的。
在一个单独的线程中,我正在检查是否有新文件出现在目录中。一旦我看到一个新文件,我可以立即处理它。
我自己在做ZIP压缩。