1,configuration
1)根節(jié)點<configuration>包含的屬性
<configuration scan="true" scanPeriod="60 seconds" debug="false"> </configuration>
scan:當此屬性設置為true時,配置文件如果發(fā)生改變,將會被重新加載,默認值為true。
scanPeriod:設置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。
debug:當此屬性設置為true時,將打印出logback內(nèi)部日志信息,實時查看logback運行狀態(tài)。默認值為false。
2)設置變量
定義一個pattern,用于appender中自定義的layout。
<property name="ENCODER_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss} %5p %class:%L] %m%n"/>
2,logger和root
1)設置root
image.png
<root level="INFO">將root的打印級別設置為“INFO”,指定了名字為“CONSOLE、info、error”的appender。
2)設置logger
image.png
logger沒有設置level,則繼承<root>。
沒有設置addtivity,默認為true,將此loger的打印信息向上級傳遞。
沒有設置appender,此loger本身不打印任何信息。
3)打印過程
當執(zhí)行到com.alibaba包中的方法時,將日志級別設置成warn,并傳遞給root,本身并不打??;root收到信息后,交由appender處理。
3,Appender
1)定義日志事件寫入的組件。
image.png
2)定義一個name為STDOUT的ConsoleAppender。
ConsoleAppender appends log events to System.out or System.err using a layout specified by the user.
image.png
4,F(xiàn)ilter
1)LevelFilter filters events based on exact level matching.
image.png
2)過濾低于閾值的日志事件。TheThresholdFilterfilters events below the specified threshold.
image.png
5,Logback日志分隔
1)定義appender
<appender name="cost" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<File>${log.dir}/cost.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/cost.log.%d{yyyy-MM-dd-HH}</fileNamePattern>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %X{traceId} - %m%n</pattern>
</encoder>
</appender>
2)定義logger
<logger name="cost" additivity="false">
<level value="info" />
<appender-ref ref="cost" />
</logger>
//沒有設置appender的話,此loger本身不打印任何信息。
//注意level級別,從低到高all --> trace ->debug-->info-->warn-->error-->fatal-->off。
3)使用logger
private static final Logger COST_LOG = LoggerFactory.getLogger("cost");
6,MDC
1)簡單原理
MDC為“Mapped Diagnostic Context”(映射診斷上下文)org.sl4j.MDC,內(nèi)部持有一個InheritableThreadLocal。將一些運行時的上下文數(shù)據(jù)通過logback打印出來
2)使用
MDC.put("traceId", UUID.randomUUID().toString());
logback中配置%X{traceId}<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}####%X{traceId}####%m%n</pattern>
MDC.clear();





