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

如何配置Spring Boot Logback滚动策略实现按天+小时日志归档

日志按天+小时归档的application.yml配置方案

要实现按日期分文件夹、每小时生成独立日志且保留7天的需求,你需要调整logback滚动策略的文件路径规则,同时修正配置里的冗余参数,以下是正确的配置:

logging:
  level:
    root: INFO
  file:
    name: "pathToLogs/myApp/logs/current/myApp.log" # 活跃日志单独存放,避免和归档日志混淆
  logback:
    rollingpolicy:
      file-name-pattern: "pathToLogs/myApp/logs/%d{yyyy-MM-dd}/myApp_%d{HH}.%i.gz"
      max-history: 7 # 保留最近7天的日志文件夹
      clean-history-on-start: true # 启动时自动清理过期日志
      max-file-size: 100MB # 可选:单个小时日志超量时拆分,按需调整

关键配置说明

  • file.name:把当前正在写入的活跃日志单独放在current子目录,避免和归档后的日期分类日志混放,也可以直接放在根日志目录,但分类更清晰
  • file-name-pattern:核心规则,%d{yyyy-MM-dd}作为文件夹层级,确保每天的日志自动归类到对应日期的文件夹;%d{HH}指定按小时生成独立文件;%i是日志拆分索引,当单个小时的日志超过max-file-size时会生成多个文件(比如myApp_08.1.gz),不需要拆分的话可以去掉.%i
  • max-history:设置为7,logback会自动删除超过7天的日期文件夹,正好匹配你保留7个日期文件夹的需求
  • clean-history-on-start:开启后应用启动时就会清理过期日志,避免日志堆积占用磁盘空间

原配置的问题修正

  1. 原配置的file-name-pattern重复写了logs路径,且没有将日期作为文件夹层级,导致所有日志文件混在同一目录,无法实现按日期分类的需求
  2. 原配置使用了logging.file.max-history,这个参数针对旧日志系统实现,对于logback滚动策略,应该用logging.logback.rollingpolicy.max-history,原参数可直接移除

最终效果

应用运行后,会在pathToLogs/myApp/logs下生成以yyyy-MM-dd命名的文件夹,每个文件夹内包含对应小时的日志文件(比如myApp_00.gz、myApp_01.gz...),超过7天的日期文件夹会被自动清理,最终保留最近7天的日志目录,每个目录下最多24个小时日志文件(若全天有日志输出)

内容的提问来源于stack exchange,提问作者Aleksey Bakharev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:12:48