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

2021年10月27日11:35:44 發表評論 5,744 ℃

今天突然收到服務器告警磁盤快滿了,當時還是比較驚訝,因為服務日志我配置了大小和個數限制,鏡像和系統日志我也設置了定時清理。

才運行兩個月怎么這么快就要滿了,然后馬上登錄了其中一臺服務器排查,發現一些運行比較久的服務的容器占用了很大一部分容量,有一些服務容器甚至超過了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不生效

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

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