1,configuration
1)根节点<configuration>包含的属性
<configuration scan="true" scanPeriod="60 seconds" debug="false"> </configuration>
scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为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)打印过程
当执行到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,Filter
1)LevelFilter filters events based on exact level matching.
image.png
2)过滤低于阈值的日志事件。TheThresholdFilter
filters 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
,内部持有一个InheritableThreadLocal。将一些运行时的上下文数据通过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();
网友评论