logback 基本配置解析
Appender
你可以定義多個appender
<appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender"> <layout> <pattern>%msg%n</pattern> </layout> </appender> <appender name="File-Appender" class="ch.qos.logback.core.FileAppender"> <file>${LOG_PATH}/logfile-${timestamp-by-second}.log</file> <encoder> <pattern>%msg%n</pattern> <outputPatternAsHeader>true</outputPatternAsHeader> </encoder> </appender>
name和class 為必須的屬性
class 標誌full qualified 的類名
name 屬性代表的是這個appender 會被引用是使用的值
我們定義了一個名為File-Appender的檔案追加器。此appender寫入由<file>元素定義的檔案。
Note: Encoders were introduced in Logback version 0.9.19. Due to the benefits that encoders provide, as explained here, it is recommended to use encoders instead of layouts. As a matter of fact, Logback has removed support for layouts in FileAppender and its sub-classes from version 0.9.19 onwards.
Logger
<logger name="guru.springframework.blog.logbackxml" level="info" additivity="fale"> <appender-ref ref="File-Appender"/> <appender-ref ref="Console-Appender"/> </logger> <root> <appender-ref ref="Console-Appender"/> </root>
在上面的程式碼中,我們定義了兩個記錄器。由<logger>定義的第一個記錄器配置guru.springframework.blog.logbackxml包下的所有記錄器以使用檔案追加器。 <root>定義的第二個是配置為使用控制檯appender的根記錄器。
activity
這裡看到我們在logger中添加了activity屬性為false
如果不加這個屬性的話,root中如果同時添加了同一個appender,
例如這裡的Console-Appender,那麼會在console中同時列印兩次相同的日誌
Note:root 保底的logger ,如果定義的logger中的level屬性沒有配置,首先會去檢視是否繼承體系中是否有上級logger,如果有則使用上級的,直到最後的root 為止
logger 的分層命名規則
Loggers維護分層命名規則。例如,名為guru的logger是記錄器的父記錄,名為guru.springframework,logger的祖先名為guru.springframework.blog。
root -> guru -> guru.spring -> guru.spring.log
這裡是按照包的命名來解析繼承關係