You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Spring Boot日志滚动策略未限制归档数量求助

限制Spring Boot应用日志文件数量的方案

问题背景

在多台服务器运行测试实例时,部分节点出现磁盘空间不足,排查发现是日志组件导致。使用@Slf4j注解记录日志,当前日志配置如下:

# Logging
logging.level.root=INFO
logging.level.web=INFO
logging.logback.rollingpolicy.max-file-size=20MB
logging.file.name=logs/ims-app.log
logging.file.path=logs
logging.logback.rollingpolicy.max-history=7

Docker容器内单日生成了大量归档日志文件,开发服务器30天日志已占用19GB空间,需限制单实例日志文件数量,同时保留近期日志。

解决方案

1. 新增总日志大小限制

当前配置仅设置了单文件大小和日志保留天数,但缺少总日志容量上限,导致单日内容量较大时会生成大量分段归档文件。添加total-size-cap配置后,当所有归档日志总大小超出阈值,旧文件会被自动删除:

# 限制所有归档日志总大小为1GB,可根据需求调整
logging.logback.rollingpolicy.total-size-cap=1GB

2. 优化滚动策略(可选)

若需更精准控制单日日志文件数量,可结合时间+大小的滚动规则,比如按小时拆分日志,同时限制每个时间窗口的文件数量:

# 按小时生成归档文件,%i为同小时内的分段序号
logging.logback.rollingpolicy.file-name-pattern=logs/ims-app.log.%d{yyyy-MM-dd-HH}.%i.gz
# 单文件最大20MB
logging.logback.rollingpolicy.max-file-size=20MB
# 总日志容量上限1GB
logging.logback.rollingpolicy.total-size-cap=1GB
# 保留7天日志
logging.logback.rollingpolicy.max-history=7

此配置会按小时归档日志,同小时内文件达到20MB时生成新分段,总容量超出上限后自动清理旧文件。

3. 自定义Logback配置(进阶)

如果需要更高灵活性,可直接编写logback-spring.xml配置文件,明确配置滚动策略:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${LOG_FILE}</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!-- 归档文件命名规则 -->
    <fileNamePattern>${LOG_PATH}/ims-app.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
    <!-- 单文件最大容量 -->
    <maxFileSize>20MB</maxFileSize>
    <!-- 日志保留天数 -->
    <maxHistory>7</maxHistory>
    <!-- 总日志容量上限 -->
    <totalSizeCap>1GB</totalSizeCap>
  </rollingPolicy>
  <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

验证方式

修改配置后重启应用,观察日志目录:

  • 当总日志大小接近total-size-cap时,最早的归档文件会被自动删除
  • 单日生成的日志文件数量会因总容量限制得到有效控制

内容的提问来源于stack exchange,提问作者Yusuf gndz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:31:51