【问题标题】:How do I configure logback to gzip my logs automatically?如何配置 logback 以自动压缩我的日志?
【发布时间】:2013-06-01 00:59:35
【问题描述】:

我在我的 java web 应用程序中使用 logback。这是我的“logback.xml”文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <property name="LOG_DIR" value="/home/ying/.jetty_logs/vehicle" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger{36}[%L] - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="LAST" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/last.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>last.%d{yyyy-MM}.gz</fileNamePattern>
            <maxHistory>24</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date:%msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="WARN" />
    <logger name="org.apache.shiro" level="WARN" />
    <logger name="org.hibernate" level="WARN" />

    <logger name="ying.car.interceptor.AutoLoginInterceptor" additivity="false" level="INFO">
        <appender-ref ref="LAST" />
    </logger>
    <logger name="ying.car.controller.LoginController" additivity="false" level="INFO">
        <appender-ref ref="LAST" />
    </logger>
    <logger name="ying.car.controller.LogoutController" additivity="false" level="INFO">
        <appender-ref ref="LAST" />
    </logger>

    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

今天是 2013 年 6 月 1 日,我所有的旧日志都被覆盖并且没有创建 *.gz。 请有人帮助我。

【问题讨论】:

  • 设置 看看 logback 告诉你什么。

标签: configuration gzip logback


【解决方案1】:

尝试这样做,希望它对你有用。

<appender name="FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${LOGDIR}/filename.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <FileNamePattern>${LOGDIR}/file.%d{yyyy-MM-dd}.%i.log.gz
        </FileNamePattern>
        <!-- keep 30 days' worth of history -->
        <MaxHistory>30</MaxHistory>
        <!-- or whenever the file size reaches 10MB -->
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%date [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>
</appender>

如果日志文件大小超过 10MB,上述代码将按天压缩您的文件。

注意:我在 filePattern 中添加了“%i”,它会将您的文件名迭代为 file1、file2 等。

【讨论】:

  • 简短答案:fileNamePattern - (...) 请注意,文件压缩也是通过此属性指定的。例如,fileNamePattern 设置为 MyLogFile%i.log.zip 意味着归档文件必须使用 zip 格式进行压缩;也支持gz格式。来源:logback.qos.ch/manual/appenders.html
【解决方案2】:

尝试添加&lt;cleanHistoryOnStart&gt;true&lt;/cleanHistoryOnStart&gt;,以便在下次启动时发生翻转,就好像它在翻转时没有运行一样不会发生。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 2010-09-06
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2014-07-18
    • 2022-11-07
    相关资源
    最近更新 更多