1. 属性说明
onMatch和onMismatch都有三个属性值,分别为Accept、DENY和NEUTRAL
onMatch:对符合过滤级别的日志的操作。(DENY,NEUTRAL,ACCEPT)
onMismatch:对不符合过滤级别的日志的操作。(DENY,NEUTRAL,ACCEPT)
DENY:日志将立即被抛弃不再经过其他过滤器;
NEUTRAL:有序列表里的下个过滤器过接着处理日志;(该级别既不处理,也不抛弃,相当于没有任何处理,日志会被保存下来并在本appender被执行)
ACCEPT:日志会被立即处理,不再经过剩余过滤器
日志级别顺序:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
2 单一应用
log42j配置示例
匹配INFO级别以及以上级别,不匹配INFO级别以下级别,即: 匹配 >= INFO的级别
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
不匹配WARN级别以及以上级别,匹配WARN级别以下级别,即: 匹配 < WARN的级别
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
3 组合应用
log42j配置示例
<filters>
<!--不包含-->
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
<!--包含-->
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</filters>
4 log4j2的过滤器:
<Filters>
<ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex=".* test .*" onMatch="NEUTRAL" onMismatch="DENY"/>
<TimeFilter start="05:00:00" end="05:30:00" onMatch=" NEUTRAL " onMismatch="DENY"/>
</Filters>
5. logback 过滤器
1.级别过滤器
LevelFilter: 级别过滤器,对特定某个级别的日志进行过滤。
只记录INFO和WARN级别的日志
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
只记录ERROR和DEBUG的日志
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
2. 临界值过滤器
ThresholdFilter: 临界值过滤器,只打印指定级别(包含该级别)以上的日志。它没有过多的参数,只有默认配置。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志返回DENY
打印ERROR,INFO,WARN的日志
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
LevelFilter和ThresholdFilter组合使用只打印DEBUG和ERROR
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
3.EvaluatorFilter
EvaluatorFilter是求值过滤器,评估、鉴别日志是否符合指定条件。
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- 默认为 ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return message.contains("billing");</expression>
</evaluator>
<OnMatch>ACCEPT </OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>