可以确認一下内容,發現三個 appender 都在。

但是呢,轉換後的檔案并不能直接使用,需要稍微做一些調整,因為:
第一,日志的格式化有細微的不同,Logback 中沒有 %l。
第二,RollingFileAppender 需要指定 RollingPolicy 和 TriggeringPolicy,前者負責日志的滾動功能,後者負責日志滾動的時機。如果 RollingPolicy 也實作了 TriggeringPolicy 接口,那麼隻需要設定 RollingPolicy 就好了。
TimeBasedRollingPolicy 和 SizeAndTimeBasedRollingPolicy 是兩種最常用的滾動政策。
TimeBasedRollingPolicy 同時實作了 RollingPolicy 與 TriggeringPolicy 接口,是以使用 TimeBasedRollingPolicy 的時候就可以不指定 TriggeringPolicy。
TimeBasedRollingPolicy 可以指定以下屬性:
fileNamePattern,用來定義檔案的名字(必選項)。它的值應該由檔案名加上一個 %d 的占位符。%d 應該包含 java.text.SimpleDateFormat 中規定的日期格式,預設是 yyyy-MM-dd。滾動周期是通過 fileNamePattern 推斷出來的。
maxHistory,最多保留多少數量的日志檔案(可選項),将會通過異步的方式删除舊的檔案。比如,你指定按月滾動,指定 maxHistory = 6,那麼 6 個月内的日志檔案将會保留,超過 6 個月的将會被删除。
totalSizeCap,所有日志檔案的大小(可選項)。超出這個大小時,舊的日志檔案将會被異步删除。需要配合 maxHistory 屬性一起使用,并且是第二條件。
來看下面這個 RollingFileAppender 配置:
<appender name="D" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天滾動 -->
<fileNamePattern>debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 儲存 30 天的曆史記錄,最大大小為 30GB -->
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%relative [%thread] %level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
基于按天滾動的檔案政策,最多保留 30 天,最大大小為 30G。
SizeAndTimeBasedRollingPolicy 比 TimeBasedRollingPolicy 多了一個日志檔案大小設定的屬性:maxFileSize,其他完全一樣。
基于我們對 RollingPolicy 的了解,可以把 logback-test.xml 的内容調整為以下内容:
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<Append>true</Append>
<File>debug.log</File>
<!-- 按天輪轉 -->
<pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern>
<appender name="E" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天輪轉 -->
<fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 儲存 30 天的曆史記錄,最大大小為 30GB -->
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n</pattern>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<root level="debug">
<appender-ref ref="stdout"/>
<appender-ref ref="D"/>
<appender-ref ref="E"/>
</root>
</configuration>
修改 Test 類的内容:
public class Test {
static Logger logger = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
logger.debug("logback");
logger.error("logback");
}
}
運作後,可以在 target 目錄下看到兩個檔案:debug.log 和 errror.log。
04、Logback 手冊
Logback 的官網上是有一份手冊的,非常詳細,足足 200 多頁,隻不過是英文版的。小夥伴們可以看完我這篇文章入門實操的 Logback 教程後,到下面的位址看官方手冊。
http://logback.qos.ch/manual/index.html如果英文閱讀能力有限的話,可以到 GitHub 上檢視雷鋒翻譯的中文版:
https://github.com/itwanger/logback-chinese-manual當然了,還有一部分小夥伴喜歡看離線版的 PDF,我已經整理好了:
連結:https://pan.baidu.com/s/16FrbwycYUUIfKknlLhRKYA 密碼:bptl