1. 程式人生 > >Logback使用的一點小坑

Logback使用的一點小坑

最近在使用Logback時遇到的坑記錄一下,避免再次遇到

在logback中我們知道 日誌的回滾策略有很多種。但是常用的就是 根據時間/檔案大小來滾動記錄,比如每天滾動一次,每小時,日誌檔案超過指定大小時等等。

下面則是我想按照指定時間配置的logback.xml ,但是一直都沒有生效 也就是日誌檔案一直都記錄到一開始指定的檔案中,沒有滾動記錄檔案

節選片段

<appender name="testloger" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${LOG_FILE_PATH}/${LOG_FILE_NAME}</File
>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd-HH:mm}.txt</fileNamePattern> <MaxHistory>3</MaxHistory> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"
>
<pattern>${PATTERN}</pattern> </layout> </appender>

這是我之前的配置檔案,但是一直沒有生效,也就是一直沒有按照我想要的每分鐘滾動記錄一次。每次的日誌都記錄到了

    <File>${LOG_FILE_PATH}/${LOG_FILE_NAME}</File>

配置的檔案中,百思不得其解,起初以為是配置檔案的問題,然後在網上找了好長時間與自己實驗了好多次都還是一樣的問題。
然而,一次偶然的實驗中最後找到了問題的所在問題就在配置檔案中的這一行

<fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd-HH:mm}.txt</fileNamePattern>

也就是滾動檔案的命名方式上。出錯原因就在HH:mm這裡 因為windows下檔案命名方式中不允許出現:就導致了滾動檔案建立失敗日誌就會一直記錄在活動檔案中,也就不會產生分割。

PS: 活動檔案——是appender 下的File節點指定的檔案

日誌會被優先記錄到這裡。當觸發滾動策略時,會將活動檔案中的內容移到滾動檔案中。每次日誌都會優先記錄到活動檔案  

滾動檔案—–是rollingPolicy 下的節點 fileNamePattern指定的檔案

是根據滾動策略中fileNamePattern設定的檔案,當觸發滾動策略時會建立此檔案

當活動檔案沒有指定時,則滾動檔案就會是活動檔案
當滾動檔案沒有指定時,則日誌會記錄到活動檔案中,也就是觸發滾動記錄失敗