logback 里面设置 自动删除3天之前的日志

2023-08-09 15:03:31 浏览数 (2)

1 实现

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

0 人点赞