logback總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章