要实现达到一定大小后将日志文件压缩,并删除三天前的日志数据,可以结合使用 SizeAndTimeBasedRollingPolicy 滚动策略和 DeleteOlderThan 选项来配置。
下面是一个示例配置,实现日志文件达到一定大小后进行滚动和压缩,并保留最近三天的日志数据:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>3</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<rollingOnStartup>true</rollingOnStartup>
<deleteOlderThan>3d</deleteOlderThan>
<compressionMode>gzip</compressionMode>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
在上述配置中,我们使用了 SizeAndTimeBasedRollingPolicy 滚动策略,并设置了以下属性:
<maxFileSize>: 设置单个日志文件的最大大小,当文件大小达到该值时,会触发滚动和压缩操作。
<maxHistory>: 设置保留的历史日志文件的最大数量,这里设置为3,保留最近三天的日志。
<totalSizeCap>: 设置日志文件总大小的上限,当总大小达到该值时,会触发删除较早日志的操作。
<cleanHistoryOnStart>: 设置为 true,表示在应用启动时清理历史日志文件。
<rollingOnStartup>: 设置为 true,表示在应用启动时进行滚动操作。
<deleteOlderThan>: 设置删除比指定时间早的日志文件,这里设置为 3d,表示删除三天前的日志。
<compressionMode>: 设置压缩模式,这里使用 gzip 进行压缩。
需要根据你的需求调整 <maxFileSize>、<totalSizeCap> 和 <deleteOlderThan> 的值,以适应你的场景和日志大小。