Logback程序化设置记录到gzip文件

3
我正在使用Logback,希望将一些字符串记录到日志文件中,并在完成后让它gzip该文件。 我遵循了以下示例:以编程方式配置LogBack appender,但还没有弄清楚如何在完成日志记录时告诉它gzip该文件。所有示例都显示使用fileNamePattern。我看到的示例都是在logback.xml中定义的,但我正在尝试通过代码实现。如果有指针/示例,将不胜感激 :)

定义“完成”。何时需要gzip文件-什么是触发器? - Boris the Spider
我正在对一个文件执行一些操作,当这些操作失败时,我想记录文件的其余部分。一旦文件完成,我就完成记录 - 此时应该将日志文件压缩为gzip格式。 - Guy Wald
1
那么,我理解得对吗?当处理失败时,在程序运行时动态定义appender。在这种情况下,只需关闭appender并在完成后自己压缩文件即可... - Boris the Spider
1个回答

4
<!-- Time and Size based: Roll every day and split big file in smaller peaces -->
<appender name="ROOT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/root.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_HOME}/root-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>10</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%date %-5level [%thread] - %mdc{loginName} - [%logger]- %msg%n</pattern>
    </encoder>
</appender>

注意“.gz”:这表示日志文件将被压缩。将其替换为.zip以使用zip文件。

虽然有一些限制,但基本上是最简单的流程。文档中指出。

就像FixedWindowRollingPolicy一样,TimeBasedRollingPolicy支持自动文件压缩。如果fileNamePattern选项的值以.gz或.zip结尾,则启用此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接