SpringBoot1.5日志配置logging.file.max-history、max-size不生效

2021年10月27日11:35:44 发表评论 316 ℃

今天突然收到服务器告警磁盘快满了,当时还是比较惊讶,因为服务日志我配置了大小和个数限制,镜像和系统日志我也设置了定时清理。

才运行两个月怎么这么快就要满了,然后马上登录了其中一台服务器排查,发现一些运行比较久的服务的容器占用了很大一部分容量,有一些服务容器甚至超过了10G。

最终确定罪魁祸首就是微服务的日志,这个是运行了两个多月的部分服务日志截图:

SpringBoot1.5日志配置logging.file.max-history、max-size不生效

但是我记得我很早之前就对日志配置优化了。

开发默认配置是下图这样的,保留365天,每个文件不超过100MB。

SpringBoot1.5日志配置logging.file.max-history、max-size不生效

因为本身我们有日志系统采集存储,所以服务器没必要保留那么久的日志。我配置中心的日志配置是:

logging:
  level:
    root: INFO
  file:
    max-size: 50MB
    max-history: 3

只保留3天的,每个文件50MB。

但是从现在日志文件数量来看,我的配置没有生效,因为当初配置以后也没有测试。

这个不得不吐槽一下SpringBoot的配置,很多配置不统一,不同的版本也有可能不一样,有的可能是驼峰格式,有的可能是'-'连接符。

但是这个logback的日志配置,网上找了好多文档,当然大部分都是复制粘贴的,但都说SpringBoot1.5-SpringBoot2.4是这样配置的。

于是我把max-size改成了10KB,再次测试,依然不生效。

最后让开发看了下logging相关的配置,根本就不支持logging.file的配置,level的配置是支持的。

但测试直接修改logback-spring.xml的maxFileSize为10KB就生效的。

出现这种情况的原因,可能是SpringBoot(1.5.22)版本太低,或者logback(1.1.11)依赖版本太低了,再或者可能根本就不是logging.file.xxx这样配置的。

但是没有找到相关的文档得以验证。

难道几十个微服务,我要每个服务去改logback-spring.xml文件吗?

最后综合考虑了下,只能在build之前,通过sed替换下logback-spring.xml的maxFileSize和maxHistory。

我也去看了下SpringBoot官网的日志配置,SpringBoot2.4以后又发生了变化,如下:

SpringBoot1.5日志配置logging.file.max-history、max-size不生效

精选全网爆款产品,爆品销量榜单,全场低至0元起,还有更多云产品免费试用,带你0门槛上云

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: