我不确定是否有可能在日志行到达 logback appender 时基本上对它们进行 gzip,而不是在我们进行日志旋转时压缩文件。这是否可能,如果是这样,如何实现这一点,“即时”压缩而不是整个文件有很多好处吗?
问问题
70 次
1 回答
1
当然。您可以简单地保持 gzip 压缩过程打开并在它们进入时为其提供行。这将显着减少日志文件所需的空间,并且平均不会占用更多 CPU 资源,因为无论如何您最终都会压缩它.
不利的一面是,在任何时间点,压缩的日志文件都不会包含许多已经提供的日志行,因为压缩过程存在延迟和突发性。在发射压缩块之前,需要累积许多行。其次,压缩文件在关闭之前不会是有效的 gzip 文件。您仍然可以解压缩那里的内容,但它不会包含带有检查值的预告片。如果进程被终止或机器崩溃,您将得到一个无效的 gzip 文件,该文件没有最近的几行日志。当然,最近的日志行可能正是您最感兴趣的,以了解到底发生了什么。
所有这些缺点都可以通过此应用程序的专用方法来解决,该方法在gzlog.h / gzlog.c中实现。gzlog 确保在写入每一行之后,gzip 压缩的日志文件是完整且有效的,并且包含该日志行。此外,即使 gzlog 进程本身在添加日志行的过程中被中断,它也可以使用最后提供的日志行重建 gzip 文件。
于 2020-10-03T00:01:54.993 回答