https://blog.youkuaiyun.com/weixin_44779019/article/details/96506341
此篇详细解析logback中的filter
日志框架的主导思想:能够将日志进行分门别类
logback两种基本过滤器
<filter>
常识- LevelFilter级别过滤器
- ThresholdFilter 临界值过滤器
1. <filter>
常识
过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。
返回DENY,日志将立即被抛弃不再经过其他过滤器;
返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;
返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
过滤器被添加到 中,为 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。 有多个过滤器时,按照配置顺序执行。
2. LevelFilter级别过滤器
根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:
<level>:
设置过滤级别
<onMatch>:
用于配置符合过滤条件的操作
<onMismatch>:
用于配置不符合过滤条件的操作
例:
<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--filter用于过滤信息-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--
class:在此指定LevelFilter 级别过滤器
-->
<level>ERROR</level>
<!--级别类型:ERROR-->
<onMatch>DENY</onMatch>
<!--匹配==> DENY(抛弃且其他过滤器也不匹配)-->
<onMismatch>ACCEPT</onMismatch>
<!--未匹配==》ACCEPT(接送且不再被其他过滤器匹配)-->
</filter>
<!--
本人就此例简述:所以的日志信息只判断是否为ERROR级别,
如果是ERROR级别就将该条日志信息从所有日志中踢除,
如果某一日志不是ERROR级别,就将日志留下而后打印到特定的地方。
-->
<encoder>
<pattern>
%d-%msg%n
</pattern>
</encoder>
<!--TimeBasedRollingPolicy滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>D:\Documents\Desktop\日志文件夹\info.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
3. ThresholdFilter 临界值过滤器
过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--filter用于过滤信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
<!--
由于ERROR级别日志为最高,因此只会打印留下ERROR级别的日志进行打印
-->
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>D:\Documents\Desktop\日志文件夹\error.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
参考博客:https://blog.youkuaiyun.com/shuidingdang/article/details/77975314