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

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

初版這樣版本,可是服務器啓動以後沒有生成日誌文件:app

<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 這個按時間滾動方式配置的。spa

之因此沒有生效,是由於一個結節沒有配置上。日誌

<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就是爲了產生一個序號,防止日誌文件覆蓋。code

相關文章
相關標籤/搜索