【问题标题】:Logback programmatically set to log to a gzip fileLogback 以编程方式设置为记录到 gzip 文件
【发布时间】:2014-01-29 09:55:14
【问题描述】:

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

我是按照以下示例进行的:

Programmatically configure LogBack appender

但是我还没弄清楚如何在我完成记录后告诉它 gzip 文件。 所有示例都显示使用 fileNamePattern。我看到的示例显示在 logback.xml 中定义它,但我正在尝试通过代码来执行此操作。

不胜感激一些指针/例子:)

【问题讨论】:

  • 定义“完成”。什么时候需要 gzip 文件 - 触发器是什么?
  • 我正在对文件进行一些操作,当这些操作失败时,我想记录文件的其余部分。文件完成后,我已完成日志记录 - 此时应压缩日志文件。
  • 所以我认为您在处理失败时动态定义附加程序是否正确?在这种情况下,只需关闭附加程序并在完成后自己压缩文件......

标签: java logging slf4j logback


【解决方案1】:
<!-- 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 结尾,则启用此功能。

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多