第六章:Spring Boot 默認日誌框架配置之loger節點詳解(二)

一.loger節點說明

<loger>用來設置某一個包或者具體的某一個類的日誌打印級別、以及指定<appender><loger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。java

  • name:用來指定受此loger約束的某一個包或者具體的某一個類。
  • level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,表明強制執行上級的級別。若是未設置此屬性,那麼當前loger將會繼承上級的級別。
  • addtivity:是否向上級loger傳遞打印信息。默認是true。

二.配置策略

  • 帶有loger的配置,不指定級別,不指定appender

<logger name="com.dudu.controller" />

將控制controller包下的全部類的日誌的打印,可是並沒用設置打印級別,因此繼承他的上級的日誌級別「info」; 
沒有設置addtivity,默認爲true,將此loger的打印信息向上級傳遞; 
沒有設置appender,此loger自己不打印任何信息。 
<root level="info">root的打印級別設置爲「info」,指定了名字爲「console」appenderapp

當執行com.dudu.controller.LearnController類的login方法時,LearnController 在包com.dudu.controller中,因此首先執行<logger name="com.dudu.controller"/>,將級別爲「info」及大於「info」的日誌信息傳遞給root,自己並不打印; 
root接到下級傳遞的信息,交給已經配置好的名爲「console」的appender處理,「console」 appender 將信息打印到控制檯;spa

打印結果以下:日誌

16:00:17.407 logback [http-nio-8080-exec-8] INFO  com.dudu.controller.LearnController - 日誌輸出 info
16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日誌輸出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController -
  • 帶有多個loger的配置,指定級別,指定appender

<configuration>
    ...

    <!--logback.LogbackDemo:類的全路徑 -->
    <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

控制com.dudu.controller.LearnController類的日誌打印,打印級別爲「WARN」; 
additivity屬性爲false,表示此loger的打印信息再也不向上級傳遞; 
指定了名字爲「console」的appender;
這時候執行com.dudu.controller.LearnController類的login方法時,先執行<logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">,將級別爲「WARN」及大於「WARN」的日誌信息交給此loger指定的名爲「console」的appender處理,在控制檯中打出日誌,再也不向上級root傳遞打印信息。code

16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日誌輸出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController - 日誌輸出 error

固然若是你把additivity="false"改爲additivity="true"的話,就會打印兩次,由於打印信息向上級傳遞,logger自己打印一次,root接到後又打印一次。xml

注意:繼承

<configuration>
    ...

    <logger name="com.example.demo.controller" level="WARN" additivity="false">
       <appender-ref ref="consoleLog"/>
    </logger>

    <logger name="com.example.demo.controller"/>

    <logger name="com.example.demo"/>
</configuration>

範圍有重疊的話,範圍小的,有效。coffeescript

相關文章
相關標籤/搜索