[英]Logback: SizeAndTimeBasedRollingPolicy not honoring totalSizeCap
[英]logback : SizeAndTimeBasedRollingPolicy not deleting files with 4 digit “%i”
我们在我们的产品中使用SizeAndTimeBasedRollingPolicy / SizeAndTimeBasedFNATP(返回1.1.3)。 这是来自logback配置文件的片段:
<appender name="SERVER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${MY_LOGS}/myabc.log</file> <append>true</append> <!-- Roll log file on both time (per day) and size (250mb). Gzip on roll. --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- location and name of rolled log files --> <fileNamePattern>${MY_LOGS}/myabc-%d{yyyy-MM-dd}.%i.gz</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- whenever the file size reaches 250MB, roll it --> <maxFileSize>250MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{24} [%C{1}.%M]</pattern> </encoder> </appender>
生成的日志文件具有以下名称:myabc-2016-11-21.0.gz,myabc-2016-11-21.1.gz,myabc-2016-11-21.2.gz等。
问题是,如果日志文件的扩展名(%i)超过3位,则30天(maxHistory)后不会将其删除。 例如,myabc-2016-11-21.0.gz将在30天后删除,但是myabc-2016-11-21。 1000 .gz没有被删除。
我是否需要将其他附加程序/配置添加到logback配置文件中,以确保扩展名超过3位的文件也被删除,或者logback中的错误?
[我尝试过使用Logback 1.1.7,但这没有帮助]
我有同样的问题,看回了源代码(版本1.2.3)
软件包-ch.qos.logback.core.rolling.helper
并找到这行buf.append("(\\\\d{1,3})");
因此它被硬编码为1-3位整数,其中1000个超出此间隔,索引大于1000的新日志文件不会替换旧的日志文件,而是继续附加到文件系统。
此问题已在1.3.0-alpha1中修复
你可以在这里检查提交
https://github.com/qos-ch/logback/commit/f264607fb450
他们从
buf.append("(\\d{1,3})");
至
buf.append("(\\d+)");
还有这里的官方新闻
https://logback.qos.ch/news.html
TimeBasedArchiveRemover现在可以处理超过999个的索引。这修复了Diego Furtado报告的LOGBACK-1175,后者还提供了相关PR。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.