logback logback.xml常用配置详解(三) <filter>
?
转载自:http://www.360doc.com/content/11/0915/11/1542811_148398374.shtml,谢谢作者的原文,仅供学习
?
<filter>:
过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
过滤器被添加到<Appender>?中,为<Appender>?添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender>?有多个过滤器时,按照配置顺序执行。
?
下面是几个常用的过滤器:
?
LevelFilter:?级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:
<level>:设置过滤级别
<onMatch>:用于配置符合过滤条件的操作
<onMismatch>:用于配置不符合过滤条件的操作
?
例如:将过滤器的日志级别配置为INFO,所有INFO级别的日志交给appender处理,非INFO级别的日志,被过滤掉。
Xml代码??
- <configuration>???
- ??<appender?name="CONSOLE"?class="ch.qos.logback.core.ConsoleAppender">???
- ????<filter?class="ch.qos.logback.classic.filter.LevelFilter">???
- ??????<level>INFO</level>???
- ??????<onMatch>ACCEPT</onMatch>???
- ??????<onMismatch>DENY</onMismatch>???
- ????</filter>???
- ????<encoder>???
- ??????<pattern>???
- ????????%-4relative?[%thread]?%-5level?%logger{30}?-?%msg%n???
- ??????</pattern>???
- ????</encoder>???
- ??</appender>???
- ??<root?level="DEBUG">???
- ????<appender-ref?ref="CONSOLE"?/>???
- ??</root>???
- </configuration>??
?
ThresholdFilter:?临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
例如:过滤掉所有低于INFO级别的日志。
Xml代码??
- <configuration>???
- ??<appender?name="CONSOLE"???
- ????class="ch.qos.logback.core.ConsoleAppender">???
- ????<!--?过滤掉?TRACE?和?DEBUG?级别的日志-->???
- ????<filter?class="ch.qos.logback.classic.filter.ThresholdFilter">???
- ??????<level>INFO</level>???
- ????</filter>???
- ????<encoder>???
- ??????<pattern>???
- ????????%-4relative?[%thread]?%-5level?%logger{30}?-?%msg%n???
- ??????</pattern>???
- ????</encoder>???
- ??</appender>???
- ??<root?level="DEBUG">???
- ????<appender-ref?ref="CONSOLE"?/>???
- ??</root>???
- </configuration>??
?
EvaluatorFilter:?求值过滤器,评估、鉴别日志是否符合指定条件。有一下子节点:
<evaluator>:
鉴别器,常用的鉴别器是JaninoEventEvaluato,也是默认的鉴别器,它以任意的java布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。evaluator有个子标签NameTypeDescriptioneventLoggingEvent与记录请求相关联的原始记录事件,下面所有变量都来自event,例如,event.getMessage()返回下面"message"相同的字符串throwableProxythrowableProxyIThrowableProxy与日志事件关联的异常代理。如果没有异常与日志事件关联,则变量"throwableProxy" 为 null. 当异常被关联到日志事件时,"throwableProxy" 在远程系统上不会为null
?
?
<onMatch>:用于配置符合过滤条件的操作
<onMismatch>:用于配置不符合过滤条件的操作
?
例如:过滤掉所有日志消息中不包含“billing”字符串的日志。
Xml代码??
- <configuration>???
- ???
- ??<appender?name="STDOUT"?class="ch.qos.logback.core.ConsoleAppender">???
- ????<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>???
- ????<encoder>???
- ??????<pattern>???
- ????????%-4relative?[%thread]?%-5level?%logger?-?%msg%n???
- ??????</pattern>???
- ????</encoder>???
- ??</appender>???
- ???
- ??<root?level="INFO">???
- ????<appender-ref?ref="STDOUT"?/>???
- ??</root>???
- </configuration>??
?
Xml代码?? ? 其他Filter不太常用我这里就不讲了,大家可以参见官网。 ?