1 实现
要实现达到一定大小后将日志文件压缩,并删除三天前的日志数据,可以结合使用 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> 的值,以适应你的场景和日志大小。