Igg*_*ydv 6 logging logback logback-classic
登录版本1.2.3
我想在我们的Logback配置文件(logback.xml)中使用SizeAndTimeBasedRollingPolicy,但是此时SizeAndTimeBasedRollingPolicy无法正常运行。(https://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedRollingPolicy)
理想情况下,我希望保留日志的日期不迟于ex。90天,每个文件不超过100MB,总档案大小为ex。总共10GB。
按照目前的情况,totalSizeCap应用于MaxHistory范围内的每个条目。例如
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>mylog.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
<maxFileSize>100MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
上面的XML配置将创建跨越60天的日志,每天应用1GB的totalSizeCap。这将导致总存档大小为60GB,而不是预期的1GB。如果在一天中达到了totalSizeCap,则当天的日志将通过删除当天最旧的文件开始进行翻转,这将在日志历史记录中创建间隙,这是我们所不希望的。解决此错误的方法是使用每年的滚动,而不是每天或每月的滚动,不幸的是,在使用SizeAndTimeBasedRollingPolicy时,每年的滚动不起作用。
有谁知道这个问题,这个问题已经解决,还是我在配置中做错了?
看来你发现了一个bug!
\n\n日志中不应有间隙。当达到totalSizeCap 时,应删除最旧的日志文件。当达到 maxHistory 时,应删除最旧的日志文件。
\n\n不幸的是,logback 中似乎存在一个错误,导致日志记录出现间隙,因为没有删除最旧的文件。请参阅此处的演示:https ://github.com/riskop/slf4j_logback_SizeAndTimeBasedRollingPolicy_problem
\n\n我已经提出了一个问题:https ://jira.qos.ch/browse/LOGBACK-1361
\n\n根据 G\xc3\xbclc\xc3\xbc 它将在 logback classic 1.3.0 中修复。
\n\n请注意,您可以在 logback 的 Jira 上“投票”该问题!
\n