logback配置说明

2018-04-26  本文已影响0人  沐兮_d64c

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)过滤低于阈值的日志事件。The ThresholdFilter 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();

上一篇下一篇

猜你喜欢

热点阅读