gpt4 book ai didi

java - logback 中的 MaxBackupIndex

转载 作者:行者123 更新时间:2023-11-30 07:52:16 26 4
gpt4 key购买 nike

我有一个java项目我使用 Logback 作为日志记录框架而不是 log4j 项目。Logback 的架构足够通用,可以适用于不同的情况。我有这个 logback.xml 文件,同时期望不超过 10 个日志文件,但事实并非如此

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

<property name="DEV_HOME" value="" />

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>

<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>Calzada.log</file>
<encoder>
<pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>ATrackAT1Handler.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
<maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10KB</maxFileSize>

</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>CalzadaError.log</file>
<encoder>
<pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>ATrackAT1HandlerError.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>



<logger name="com.calzada" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
<appender-ref ref="STDOUT" />
</logger>

<root level="error">
<appender-ref ref="FILE-ERROR" />
</root>

</configuration>

最佳答案

我认为您的配置混淆了 Logback 策略。

在您的配置中,您使用:TimeBasedRollingPolicy然后尝试设置 minIndexmaxIndex但这些配置属性在 TimeBasedRollingPolicy 上不可用, 相反它们是 FixedWindowRollingPolicy 的属性.

请参阅 TimeBasedRollingPolicy 的文档和 FixedWindowRollingPolicy .

这里有一些例子:

  • 下面的appender定义会导致Calzada.log转入ATrackAT1Handler.%i.log每次Calzada.log达到 10KB 并且 Logback 将保留最多 10 个历史文件ATrackAT1Handler.1.logATrackAT1Handler.10.log

    <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>Calzada.log</file>
    <encoder>
    <pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
    <fileNamePattern>ATrackAT1Handler.%i.log</fileNamePattern>
    <minIndex>1</minIndex>
    <maxIndex>10</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>10KB</maxFileSize>
    </triggeringPolicy>
    </appender>
  • 下面的appender定义会导致Calzada.log转入ATrackAT1Handler.<yyy-MM-dd>.%i.log每次Calzada.log达到 10KB 并且 Logback 将保留最多 10 天 的历史日志文件,但是(这是一个重要的区别)Logback 将滚动更新的文件数量没有上限每天。所以,你可以有 ATrackAT1Handler.2017-09-06.0.logATrackAT1Handler.2017-09-06.20.log然后第二天你可以得到ATrackAT1Handler.2017-09-07.0.logATrackAT1Handler.2017-09-07.12.log

    <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>Calzada.log</file>
    <encoder>
    <pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>ATrackAT1Handler.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxFileSize>10KB</maxFileSize>
    <maxHistory>10</maxHistory>
    </rollingPolicy>
    </appender>

所以,FixedWindowRollingPolicy允许您控制历史文件的数量和大小,而 TimeBasedRollingPolicy允许您控制历史文件的天数和每个文件的大小。 TimeBasedRollingPolicy 似乎少了一 block ,也就是说,我们如何限制所有文件的总大小?为了填补这个空白 TimeBasedRollingPolicy提供配置属性:totalSizeCap .来自文档:

totalSizeCap int

The optional totalSizeCap property controls the total size of all archive files. Oldest archives are deleted asynchronously when the total size cap is exceeded. The totalSizeCap property requires maxHistory property to be set as well. Moreover, the "max history" restriction is always applied first and the "total size cap" restriction applied second.

因此,您可以选择 FixedWindowRollingPolicy你会限制文件的数量,但你不会有每日翻转或使用 TimeBasedRollingPolicy通过 ising totalSizeCap 获得每日翻转并保留对历史日志文件占用空间的一些控制.

关于java - logback 中的 MaxBackupIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com