【问题标题】:Logback - compressing log lines before writing to fileLogback - 在写入文件之前压缩日志行
【发布时间】:2020-10-02 15:31:43
【问题描述】:

我不确定是否可以在日志行流到达 logback appender 时对其进行 gzip 压缩,而不是在我们进行日志旋转时压缩文件。这完全有可能吗?如果可以,如何实现?“即时”压缩而不是整个文件有很多好处吗?

【问题讨论】:

    标签: java logging compression gzip logback-classic


    【解决方案1】:

    当然。您可以简单地保持 gzip 压缩进程打开并在它们进入时为其提供行。这将显着减少日志文件所需的空间,并且平均不会占用更多 CPU 资源,因为无论如何您最终都会压缩它.

    缺点是在任何时间点压缩的日志文件都不会包含许多已经提供的日志行,因为压缩过程存在延迟和突发性。在发射压缩块之前,需要累积许多行。其次,压缩文件在关闭之前不会是有效的 gzip 文件。您仍然可以解压缩那里的内容,但它不会包含带有检查值的预告片。如果进程被终止或机器崩溃,您将得到一个无效的 gzip 文件,该文件没有最近的几行日志。当然,最近的日志行可能正是您最感兴趣的,以了解到底发生了什么。

    所有这些缺点都可以通过此应用程序的专用方法来解决,该方法在 gzlog.h/gzlog.c 中实现。 gzlog 确保在写入每一行之后,gzip 压缩的日志文件是完整且有效的,并且包含该日志行。此外,即使gzlog进程本身在添加日志行的过程中被中断,它也可以使用最后提供的日志行重建gzip文件。

    【讨论】:

    • 啊,你是说我需要一个单独的进程,我不能在 logback 中有内置机制?
    • 我不知道什么是 logback,但是不,它不需要是一个单独的进程。
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多