spring-boot集成logback非常簡單,只寫一個logback.xml即可。
1、根節點configuration
<configuration debug="false" scan="true" scanPeriod="10 seconds">
有3個屬性
- scan,爲true,表示如果配置文件發生更改,重新加載配置文件。默認爲true。
- scanPeriod,在scan爲true時生效,表示監測配置文件修改的時間間隔。默認爲1min。
- debug,爲true打印logback內部日誌信息,實時查看logback狀態。默認爲true。
1-1、子節點和
<contextName>MyAppContext</contextName>
<!-- 日誌生成相對路徑,後面可以改爲絕對路徑 -->
<property name="LOG_HOME" value="logs"/>
contextName表示logger上下文名稱。
property用來設置屬性,其中name,表示變量的名稱,value,表示變量定義的值。該屬性可以在後面通過${}來進行引用。
2、設置logger,root。
2-1、logger設置某個包或者某個類的打印級別以及指定對應的。
<logger name="org.springframework" level="warn" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
- name:用來指定受此logger影響的某個包名或某個類名。
- level:用來描述該logger打印級別,高於該級別的日誌方進行打印。
- additivity:表示是否向上級loggger傳遞打印信息。默認爲true。
2-2、root是頂級的logger,只需要指定級別即可。root可包含一個或多個appender-ref
<root level="info">
<appender-ref ref="STDOUT" />
</root>
3、設置appender。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8" class="xxxx">
<Pattern>[%p] [%thread : %T] %d %C:%L ===>> %m%n</Pattern>
</encoder>
</appender>
appender是的子組件,是負責寫日誌的組件。有name和class兩個必要屬性。
- name指定appender的名稱。
- class指定appender的全限定名。
常用appender如下:
3-1、ConsoleAppender
將日誌輸出到控制檯,有如下子節點。
- :對日誌進行格式化。
- :字符串 System.out 或者 System.err ,默認 System.out ;
示例:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
3-2、FileAppender
將日誌添加到文本,有如下子節點:
- file:被寫入的文件名。
- append:日誌是否添加到尾部,默認爲true。
- encoder:打印格式。
- prudent:安全寫入該文件,尤其多個appender寫入該文件時。效率低。默認爲false。
示例:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
3-3、RollingFileAppender
滾動記錄日誌,有如下子節點。
- file/append/encoder同上
- rollingPolicy:當滾動發生時,行爲由本屬性決定,有下面幾種策略。
策略:
TimeBasedRollingPolicy。最常用的滾動策略,根據時間來觸發滾動。常見屬性爲
- fileNamePattern:文件命名規則。
- maxHistory:最大歸檔文件數量。
示例
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
< fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
另外還有其他按照文件大小做滾動的策略,這裏不再展開。
4、encoder
一是負責把日誌信息轉換爲字符數組。二是把字符數組寫入到輸出流。
目前PatternLayoutEncoder 是唯一有用的且默認的encoder ,有一個節點,用來設置日誌的輸入格式。使用“%”加“轉換符”方式,如果要輸出“%”,則必須用“\”對“\%”進行轉義。
常見規則見文檔:
http://aub.iteye.com/blog/1103685
https://blog.csdn.net/xyr05288/article/details/73655597