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