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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM