logback 按時間和大小生成日志不生效的問題


服務器要記錄所有的日志,這些日志輸入到一個文件中太大了,就需要按大小和時間還分割,比如每小時產生一個文件或當文件大小大於200MB的時候生成一個文件。

第一版這樣版本,但是服務器啟動之后沒有生成日志文件:

<appender name="CONSOLE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/consolelogs/console.log</file>
        <append>true</append>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.home}/consolelogs/console.%d{yyyy-MM-dd_HH}.log
            </fileNamePattern>
            <maxHistory>72</maxHistory>
            <maxFileSize>200MB</maxFileSize>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

這個配置原來是參考 ch.qos.logback.core.rolling.TimeBasedRollingPolicy 這個按時間滾動方式配置的。

之所以沒有生效,是因為一個結節沒有配置上。

<appender name="CONSOLE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/consolelogs/console.log</file>
        <append>true</append>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.home}/consolelogs/console.%d{yyyy-MM-dd_HH}.%i.log   //這里面的%i不能少
            </fileNamePattern>
            <maxHistory>72</maxHistory>
            <maxFileSize>200MB</maxFileSize>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

上面在時間配置之后,有一個%i,這個絕對不能少。要不然在同一個小內產生多個日志文件就沒辦法區分了,這個i就是為了產生一個序號,防止日志文件覆蓋。


免責聲明!

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



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