1. 程式人生 > 實用技巧 >Logback設定保留日誌檔案個數

Logback設定保留日誌檔案個數

Logback日誌檔案佔用儲存空間太多,設定保留檔案個數,清理之前的檔案。

主要由如下三個引數配合使用

maxHistory ,可選節點,控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案,,例如設定為30的話,則30天之後,舊的日誌就會被刪除

totalSizeCap,可選節點,用來指定日誌檔案的上限大小,例如設定為3GB的話,那麼到了這個值,就會刪除舊的日誌,此引數是appender級別的,即使你的檔案儲存在了不同的日期資料夾下,還是會刪除,最多保留此設定的大小

cleanHistoryOnStart 在工程啟動時清除日誌檔案

比如如下appender

fileNamePattern表示日誌檔名規則。

MaxFileSize為100MB表示單個日誌檔案最大100MB。

totalSizeCap表示可保留日誌檔案的總大小為1GB,每個檔案100M,那麼也就是最多保留10個檔案。

maxHistory表示最多保留10天的日誌檔案,與totalSizeCap的配置規則一起生效,日誌檔案滿足任意一個條件都會被清除。

cleanHistoryOnStart表示在啟動工程時根據配置的規則清理日誌。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logBase}/${appName}-server.log</
file> <!--SizeAndTimeBasedRollingPolicy策略繼承了TimeBasedRollingPolicy策略--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--每天生成一個檔案 %i表示序號 從0開始--> <fileNamePattern>${logBase}/${appName}-server-%d{yyyy-MM-dd}.log.%i</
fileNamePattern> <!--每個檔案的大小限制--> <MaxFileSize>100MB</MaxFileSize> <!--最多保留10天的檔案,10天之前的將被清除--> <MaxHistory>10</MaxHistory> <!--該滾動策略日誌的總大小,超過的日誌會被清除--> <totalSizeCap>1GB</totalSizeCap> <!--啟動時清理日誌檔案 此項置灰清理超過保留天數的 也會清理超過總大小的--> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%X{TRACE_ID}] %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>

注意事項

logback的舊版本有bug,可能導致日誌清理策略不生效,具體有如下幾種:

1.maxHistory不生效,最低修復該bug的版本為1.1.7。

2.totalSizeCap不生效,最低修復該bug的版本為1.1.8。

3.totalSizeCap不能超過2G缺陷(int型,2g達到了int邊界),最低修復該bug的版本為1.2.0。

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>1.2.3</version>
</dependency>