【问题标题】:Logback: SizeAndTimeBasedRollingPolicy not honoring totalSizeCapLogback:SizeAndTimeBasedRollingPolicy 不遵守 totalSizeCap
【发布时间】:2016-08-29 02:15:35
【问题描述】:

我正在尝试以一种方式管理我的日志记录,即一旦最旧的归档日志文件达到总累积大小限制或达到其最大历史记录限制,它们就会被删除。在 Logback 1.1.7 中使用 SizeAndTimeBasedRollingPolicy 时,滚动文件附加程序将继续创建新存档,尽管超出了 totalSizeCap 设置。

这是我的 logback.xml 文件供参考:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${USERPROFILE}/testlogs/test.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>
                ${USERPROFILE}/testlogs/%d{yyyy-MM-dd_HH}/test%i.log.zip
            </fileNamePattern>
            <maxHistory>7</maxHistory>
            <maxFileSize>50KB</maxFileSize>
            <totalSizeCap>200KB</totalSizeCap>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p - %m%n</pattern>
        </encoder>

    </appender>

    <root level="INFO">
        <appender-ref ref="file" />
    </root>
</configuration>

这是 logback 中的错误还是我没有正确配置滚动文件附加程序?

【问题讨论】:

    标签: java logging logback


    【解决方案1】:

    这是 Logback 1.1.7 中的错误。 看: http://jira.qos.ch/browse/LOGBACK-1166

    我查过了,totalSizeCap 在 Logback 1.1.8-SNAPSHOT 中工作。

    【讨论】:

      【解决方案2】:

      好吧,即使问题得到了回答,我也想发布我们所做的工作,直到错误在 1.1.8 中得到修复。

      bug 1166 根本不会将 totalSizeCap 应用于前两个 时间单位,这取决于您正在使用的 fileNamePattern 上的最小单位,这对于您的方案来说意味着它不会考虑前两个小时的日志进行总大小上限。

      我的配置有点像从 logback 站点示例中获取的-;

      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
      
        <!-- keep 30 days' worth of history capped at 3GB total size -->
        <maxHistory>30</maxHistory>
        <totalSizeCap>3GB</totalSizeCap>
      
      </rollingPolicy>
      

      所以我们简单地从 {yyyy-MM-dd} 切换到 {yyyy-MM-dd_HH} 并且当然将 maxHistory 最大化到 30*24 。因此,我们将最后 两个小时设置为不设置上限,而不是 最后两天,对于我们的情况,它是可以省略的。当然,日志文件每隔一小时就会开始翻转,但正如我所说,这对于我们的独特案例来说是可以的。

      【讨论】:

        猜你喜欢
        • 2018-05-24
        • 2018-11-03
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 2014-12-05
        • 2015-05-30
        相关资源
        最近更新 更多