logback.xml配置文件解析一


配置文件主要結構如下:

<?xml version="1.0" encoding="utf-8"?> 
<configuration>
	<appender></appender>
	<!--looger可以有0個或多個-->
	<logger></logger>
	<!--可以有0個或1個-->
	<root></root>
</configuration>

1.appender節點(輸出源,日志輸出類型)

<appender><configuration>的子節點,是負責寫日志的組件。appender有兩個必要屬性name、class 。name指定appender的名稱,class指定appender的全限定名。
class,主要包括:

ch.qos.logback.core.ConsoleAppender 控制台輸出
ch.qos.logback.core.FileAppender 文件輸出
ch.qos.logback.core.RollingFileAppender 文件滾動輸出

以下對每個類進行分析:

ConsoleAppender 把日志輸出到控制台

有如下節點:
<encoder> : 對日志進行格式化。
<target> : 字符串System.out 或者 System.err, 默認 System.out;

<configuration>
  <appender name ="console_out" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger - %message%newline</pattern>
        </encoder>
  </appender>

FileAppender 把日志添加到文件

有如下節點:
<file>:被寫入的文件名,可以是相對目錄 , 也可以是絕對目錄 , 如果目錄不存在則會自動創建。
<append>:如果是true , 日志被追加到文件結尾 , 如果是false,清空現存文件 , 默認是true。
<encoder>:對日志進行格式化,具體的轉換符說明請參見 logback中文網

    <appender name="file_out" class="ch.qos.logback.core.FileAppender">
        <file>logs/debug.log</file>
        <encoder>
            <pattern>%date [%thread] %-5level %logger - %message%newline</pattern>
        </encoder>
    </appender>

rollingFileAppender 滾動記錄錄文件

先將日志記錄到指定文件,當符合某種條件時,將日志記錄到其他文件,有如下節點:

<file>:被寫入的文件名,可以是相對目錄,也可以解決目錄,如果目錄不存在則自動創建。
<append>:如果是true,日志被追加到文件結尾,如果是false,清空現存文件,默認是true。
<encoder>:對日志進行格式化。
<rollingPolicy>:當發生滾動時,決定 RollingFileAppender 的行為,涉及文件移動和重命名。
rollingPolicy

TimeBaseRollingPolicy :最常用的滾動策略,根據時間來制定滾動策略,即負責滾動也負責觸發滾動。有如下節點;

<fileNamePattern>:必要節點,包含文件及“%d” 轉換符,“%d”可以包含一個java.text.SimpleDateFormat 制定的時間格式,如:%d{yyyy-MM},如果直接使用%d ,默認格式是 yyyy-MM-dd。
<maxHistory>:可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件,假設設置每個月滾動,且<maxHistory> 是 6,則只保存最近6個月的文件,刪除之前的舊文件,注意:刪除舊文件是哪些為了歸檔而創建的目錄也會被刪除。
<filenamePattern>:必須包含“%i” 例如:設置最小值,和最大值分別為1和2,命名模式為 log%i.log,會產生歸檔文件log1.log和log2.log,還可以指定文件壓縮選項,例如:log%i.log.gz 或者 log%i.log.zip
triggeringPolicy:告知RollingFileAppender,激活RollingFileAppender滾動。
<appender name="errorAppender" class="ch.qos.logback.core.RollingFileAppender">
    <file>logs/error.log</file>
    <!-- 設置滾動策略 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
        <!--設置日志命名模式--> 
        <fileNamePattern>errorFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        <!--最多保留30天log-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <!-- 超過150MB時,觸發滾動策略 -->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>150</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>%d [%p] %-5level %logger - %msg%newline</pattern>
    </encoder>
</appender>

2.logger節點(控制日志輸出級別和要打印的路徑)

logger是<configuration>的子節點,來設置某一個包或者具體的某一個類的日志打印級別,以及指定當前這個包或類的輸出類型,也就是上邊的<appender>標簽中的name。logger僅有一個name屬性,兩個可選屬性 level/addtivity。

  • name:用來指定受此loger約束的某一個包或者具體的某一個類,要寫全類名。

  • level:用來設置打印級別,大小寫無關。可選值有TRACE、DEBUG、INFO、WARN、ERROR、ALL和OFF。還有一個特俗值INHERITED 或者 同義詞NULL,代表強制執行上級的級別。如果未設置此屬性,那么當前logger將會繼承上級的級別。

  • addtivity:是否向上級logger傳遞打印信息,默認為true,這個上下級就是在name上來區分的,name是java中的包或者全類名;

  • <logger>可以包含零個或多個<appender-ref>元素,表示這個appender將會添加到logger。


    <logger name="com.example" level="info">
	<!--這里的appender-ref中的ref就是指定上邊定義的apperder中的name-->
        <appender-ref ref = "console_out"/>
    </logger>

3.root節點(和上邊logger一樣)

其實就是<logger name="root"></logger>。該元素有一個level屬性,沒有name屬性,因為已經被命名 為root。Level屬性的值大小寫無關,其值為下面其中一個字符串:TRACE、DEBUG、INFO、 WARN、ERROR、ALL 和 OFF。如果 root 元素沒 有引用任何 appender,就會失去所有 appender。

  <root level="INFO">
        <appender-ref ref="console_out"/>
    </root>

對於<logger>和<root>的區別,參見logback 配置詳解(一)——logger、root


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM