核心类:TimeBasedRollingPolicy#rollover()方法
根据源码,找到了两个会清理日志文件的地方。1. 压缩*.zip文件之后,*.tmp会被删除;2. 设置了MaxHistory最大保留期限,是会清理*.zip文件的。
第一种:压缩完之后有一个delete()操作,如果所在用户没有删除的权限的话(这种可能性不大),tmp是不会被清除的 ;还有就是压缩完之后,还未删除tmp文件,应用就死掉了,那么这个tmp是不会被删除的(基本就是这么产生的)
第二种:未设置MaxHistory,默认是不会清理所有的log文件的;假如设置了MaxHistory,它也只是会删除 日期*.zip文件,*.tmp文件是不会被删除的。
解决方案:通过linux脚本定时删除logs/*.tmp 文件
<configuration> <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>20GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="ROLLING" /> </root> </configuration>
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.8</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.8</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>1.1.7</version> </dependency>
原文地址:https://www.cnblogs.com/tonggc1668/p/10095598.html
时间: 2024-10-02 08:12:13