logback filter过滤器详解

Logback提供两类Filter,一类是Regular Filter;另外一类是Turbo Filter。

Regular Filter主要应用在appeder上,只在appender级别起作用,Appender实例上可以绑定一个Regular Filter实例链。Regular Filter继承实现”ch.qos.logback.core.filter.Filter”类,自定义自己的regular filter需要继承ch.qos.logback.core.filter.Filter类,并实现decide()方法。

TurboFilter对象绑定到日志记录上下文。因此,不仅在使用给定的appender时调用它们,而且每次都发出日志记录请求。它们的范围比附加到附加器的过滤器更宽。更重要的是,它们在LoggingEvent对象创建之前被调用 。 TurboFilter对象不需要实例化日志记录事件来过滤日志记录请求。因此,turbo过滤器旨在用于记录事件的高性能过滤,甚至在创建事件之前。要实现该类型的filter需要继承ch.qos.logback.classic.turbo.TurboFilter;

logback中一般有3种常见的过滤器

LevelFilter

级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。

LevelFilter根据精确的级别匹配过滤事件。如果事件的级别等于配置的级别,则筛选器接受或拒绝该事件,具体取决于onMatch和onMismatch属性的配置。

EvaluatorFilter

求值过滤器,评估、鉴别日志是否符合指定条件。

EventEvaluator会评估给定事件是否满足给定条件。在匹配和不匹配时,托管EvaluatorFilter将分别返回onMatch或onMismatch属性指定的值。请注意,EventEvaluator是一个抽象类。您可以通过对EventEvaluator进行子类化来实现自己的事件评估逻辑。

ThresholdFilter

临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。

ThresholdFilter过滤低于指定阈值的事件。对于等于或高于阈值的事件,ThresholdFilter将在调用其decision()方法时响应NEUTRAL,但是将拒绝级别低于阈值的事件。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。