以编程方式设置的日志记录以记录到gzip文件

时间:2014-01-29 09:55:15

标签: java logging slf4j logback

我正在使用Logback,我想将一些字符串记录到日志文件中,并在完成后让它gzip文件。

我跟随的例子是:

Programmatically configure LogBack appender

但是当我完成日志记录时,还没弄明白如何告诉它gzip文件。 所有示例都显示使用fileNamePattern。我见过的例子显示在logback.xml中定义它,但我试图通过代码来做到这一点。

会很感激一些指针/示例:)

1 个答案:

答案 0 :(得分:2)

<!-- 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结尾,则启用此功能。