在使用Logback打印日志时,有时候可能会有些自定义的需求; 比如不打印某个类的日志/只打印某个类的日志/以及日志级别的过滤等等。配置
- logback.xml配置
默认情况下,过滤器相关的实现关系如下
这里简单介绍两个过滤器
ThresholdFilter, LevelFilter
二者根本的区别在于匹配日志级别的机制不同,以下为Logback完整日志等级;
在Logback中行为中有类似Spring Security 中的一个行为定义;即:赞成,中立,反对三种行为。
ThresholdFilter:匹配大于或等于设置等级的日志
LevelFilter:匹配等于设置等级的日志
简单查看源码可以看到二者的区别
ThresholdFilter 核心逻辑
LevelFilter核心逻辑
这里看到过滤器并不能看到直接的结果,该变量定义来自,父类 AbstractMatcherFilter, 跟进去看看
可以看到这里有两个变量可以设置,如果都不设置的情况下,默认值为中立,意味着不会打印设置级别的日志;可以通过分别设置两个变量实现命中和未命中的处理方式。
- ThresholdFilter
INFO
- LevelFilter
INFO ACCEPT DENY
附上一个相对完整的logback.xml配置
${log.pattern} ${log.path}/info.log ${log.path}/info.%d{yyyy-MM-dd}.log 60 ${log.pattern} INFO ACCEPT DENY ${log.path}/error.log ${log.path}/error.%d{yyyy-MM-dd}.log 60 ${log.pattern} ERROR ACCEPT DENY



