日志级别: <!-- ALL < TRANCE < DEBUG < INFO < WARN < ERROR < FATAL < OFF-->
<ThresholdFilter level="INFO" onMatch="" onMismatch=""/>
onMatch:意思是当前级别以及以上要怎么处理:ACCEPT 接收, NEUTRAL 往后走 DENY拒绝
onMismatch:意思是当前级别(不包括当前级别)以下要怎么处理:ACCEPT 接收, NEUTRAL 往后走 DENY拒绝
(总结:onMatch 是 >= 当前级别 onMismatch 是< 当前级别)
1:场景一:假如我们想要 INFO级别到ERROR级别之间的输出到控制台,其他的忽略,思路如下分析。
经过分析也就是大于等于INFO级别的日志 往后走NEUTRAL进入下一个过滤器其他的拒绝 DENY。然后在下一个过滤器中,我让大于等于FATAL的拒绝DENY,小于的接受ACCEPT。
<ThresholdFilter level="INFO" onMatch="NEUTRAL " onMismatch="DENY"/>
<ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="ACCEPT"/>
第二种方式实现:让小于FATAL的往后走,其他的拒绝,然后进入下一个过滤器。在下一个过滤器中,让大于等于INFO的接受其他的拒绝。
<ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
场景二:我需要info之后的日志,忽略掉比info级别小的日志。
这个更简单,直接大于等于info的接受,小于的拒绝。
大于等于:onMath="ACCEPT" 小于的 onMismatch="DENY"
<ThresholdFilter level="FATAL" onMatch="ACCEPT" onMismatch="DENY"/>
只要不是截取一个日志级别范围一个过滤器就够了,不需要流动NEUTRAL到第二个过滤器。只有在截取日志级别大于某个级别小于某个级别的时候,才需要两个过滤器。实现方式就是场景一描述的那样。看了这篇文章相信你能彻底掌握。
总结一遍:不要刻意在意 ACCEPT NEUTRAL DENY这三个词的意思,理解的核心在于:onMatch 是匹配到当前级别以及大于当前级别的日志怎么怎么样。onMismatch是当前级别以下的日志不包含当前级别你要怎么处理。无论是onMatch 还是onMismatch都有三个值。 是往后流动NEUTRAL 还是接受ACCEPT 或者是DENY