Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Logback-在写入文件之前压缩日志行_Java_Logging_Compression_Gzip_Logback Classic - Fatal编程技术网

Java Logback-在写入文件之前压缩日志行

Java Logback-在写入文件之前压缩日志行,java,logging,compression,gzip,logback-classic,Java,Logging,Compression,Gzip,Logback Classic,我不确定是否可以在日志行流到达logback appender时对其进行gzip处理,而不是在日志循环时压缩文件。这可能吗?如果可能的话,如何实现这一点?压缩“动态”而不是整个文件有很多好处吗?当然。您可以简单地保持gzip压缩过程的打开状态,并在它们进入时为其提供行。这将大大减少日志文件所需的空间,并且平均不会占用更多的CPU资源,因为您最终将对其进行压缩 缺点是,在任何时候,压缩日志文件都不会包含许多已经提供的日志行,因为压缩过程存在延迟和突发性。在发出压缩块之前,需要累积许多行。其次,压缩

我不确定是否可以在日志行流到达logback appender时对其进行gzip处理,而不是在日志循环时压缩文件。这可能吗?如果可能的话,如何实现这一点?压缩“动态”而不是整个文件有很多好处吗?

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

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


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

啊,所以你是说我需要一个单独的进程,我不能在回程中有内置机制。我不知道什么是回拨,但不,它不需要是单独的进程。