原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己

详细整理了logback常用配置,

不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置

logback 常用配置详解(序)logback 简介

logback 常用配置详解(一)<configuration> and <logger>

logback 常用配置详解(二)<appender>

logback 常用配置详解(三)<filter>

logback 中文手册官网手册的翻译版,在这里向中文版译者-陈华,说声辛苦啦

logback 常用配置详解(三) <filter>

<filter>:

过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。

过滤器被添加到<Appender> 中,为<Appender> 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender> 有多个过滤器时,按照配置顺序执行。

下面是几个常用的过滤器:

LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:

<level>:设置过滤级别

<onMatch>:用于配置符合过滤条件的操作

<onMismatch>:用于配置不符合过滤条件的操作

例如:将过滤器的日志级别配置为INFO,所有INFO级别的日志交给appender处理,非INFO级别的日志,被过滤掉。

  1. <configuration>
  2. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  3. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  4. <level>INFO</level>
  5. <onMatch>ACCEPT</onMatch>
  6. <onMismatch>DENY</onMismatch>
  7. </filter>
  8. <encoder>
  9. <pattern>
  10. %-4relative [%thread] %-5level %logger{30} - %msg%n
  11. </pattern>
  12. </encoder>
  13. </appender>
  14. <root level="DEBUG">
  15. <appender-ref ref="CONSOLE" />
  16. </root>
  17. </configuration>

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

例如:过滤掉所有低于INFO级别的日志。

  1. <configuration>
  2. <appender name="CONSOLE"
  3. class="ch.qos.logback.core.ConsoleAppender">
  4. <!-- 过滤掉 TRACE 和 DEBUG 级别的日志-->
  5. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  6. <level>INFO</level>
  7. </filter>
  8. <encoder>
  9. <pattern>
  10. %-4relative [%thread] %-5level %logger{30} - %msg%n
  11. </pattern>
  12. </encoder>
  13. </appender>
  14. <root level="DEBUG">
  15. <appender-ref ref="CONSOLE" />
  16. </root>
  17. </configuration>

EvaluatorFilter: 求值过滤器,评估、鉴别日志是否符合指定条件。需要额外的两个JAR包,commons-compiler.jar和janino.jar有以下子节点:

<evaluator>:

鉴别器,常用的鉴别器是JaninoEventEvaluato,也是默认的鉴别器,它以任意的java布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。evaluator有个子标签<expression>,用于配置求值条件。

求值表达式作用于当前日志,logback向求值表达式暴露日志的各种字段:

Name Type Description

event LoggingEvent 与记录请求相关联的原始记录事件,下面所有变量都来自event,例如,event.getMessage()返回下面"message"相同的字符串
message String 日志的原始消息,例如,设有logger mylogger,"name"的值是"AUB",对于 mylogger.info("Hello {}",name); "Hello {}"就是原始消息。
formatedMessage String 日志被各式话的消息,例如,设有logger mylogger,"name"的值是"AUB",对于 mylogger.info("Hello {}",name); "Hello Aub"就是格式化后的消息。
logger String logger 名。
loggerContext LoggerContextVO 日志所属的logger上下文。
level int 级别对应的整数值,所以 level > INFO 是正确的表达式。
timeStamp long 创建日志的时间戳。
marker Marker 与日志请求相关联的Marker对象,注意“Marker”有可能为null,所以你要确保它不能是null。
mdc Map 包含创建日志期间的MDC所有值得map。访问方法是:mdc.get("myKey") 。mdc.get()返回的是Object不是String,要想调用String的方法就要强转,例如,

((String) mdc.get("k")).contains("val") .MDC可能为null,调用时注意。

throwable java.lang.Throwable 如果没有异常与日志关联"throwable" 变量为 null. 不幸的是, "throwable" 不能被序列化。在远程系统上永远为null,对于与位置无关的表达式请使用下面的变量throwableProxy
throwableProxy IThrowableProxy 与日志事件关联的异常代理。如果没有异常与日志事件关联,则变量"throwableProxy" 为 null. 当异常被关联到日志事件时,"throwableProxy" 在远程系统上不会为null

<onMatch>:用于配置符合过滤条件的操作

<onMismatch>:用于配置不符合过滤条件的操作

例如:过滤掉所有日志消息中不包含“billing”字符串的日志。

  1. <configuration>
  2. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  3. <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
  4. <evaluator> <!-- 默认为 ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
  5. <expression>return message.contains("billing");</expression>
  6. </evaluator>
  7. <OnMatch>ACCEPT </OnMatch>
  8. <OnMismatch>DENY</OnMismatch>
  9. </filter>
  10. <encoder>
  11. <pattern>
  12. %-4relative [%thread] %-5level %logger - %msg%n
  13. </pattern>
  14. </encoder>
  15. </appender>
  16. <root level="INFO">
  17. <appender-ref ref="STDOUT" />
  18. </root>
  19. </configuration>

<matcher> :

匹配器,尽管可以使用String类的matches()方法进行模式匹配,但会导致每次调用过滤器时都会创建一个新的Pattern对象,为了消除这种开销,可以预定义一个或多个matcher对象,定以后就可以在求值表达式中重复引用。<matcher>是<evaluator>的子标签。

<matcher>中包含两个子标签,一个是<name>,用于定义matcher的名字,求值表达式中使用这个名字来引用matcher;另一个是<regex>,用于配置匹配条件。

例如:

  1. <configuration debug="true">
  2. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  3. <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
  4. <evaluator>
  5. <matcher>
  6. <Name>odd</Name>
  7. <!-- filter out odd numbered statements -->
  8. <regex>statement [13579]</regex>
  9. </matcher>
  10. <expression>odd.matches(formattedMessage)</expression>
  11. </evaluator>
  12. <OnMismatch>NEUTRAL</OnMismatch>
  13. <OnMatch>DENY</OnMatch>
  14. </filter>
  15. <encoder>
  16. <pattern>%-4relative [%thread] %-5level %logger - %msg%n</pattern>
  17. </encoder>
  18. </appender>
  19. <root level="DEBUG">
  20. <appender-ref ref="STDOUT" />
  21. </root>
  22. </configuration>

其他Filter不太常用我这里就不讲了,大家可以参见官网。

【转】logback logback.xml常用配置详解(三) <filter>的更多相关文章

  1. logback logback.xml常用配置详解(三)

    logback logback.xml常用配置详解 <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之 ...

  2. logback logback.xml常用配置详解(一)<configuration> and <logger>

    logback logback.xml常用配置详解(一)<configuration> and <logger> 博客分类: Log java loglogback  原创文章 ...

  3. [转] logback logback.xml常用配置详解(一)<configuration> and <logger>

    转载文章:原文出处:http://aub.iteye.com/blog/1101260 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 根节点< ...

  4. web.xml常用配置详解

    web.xml常用配置详解 context-param 指定 ServletContext(上下文) 配置文件路径,基本配置一般是Spring配置文件,或者是spring-security的配置文件. ...

  5. 【转】logback logback.xml常用配置详解(二)<appender>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  6. 【转】logback logback.xml常用配置详解(一)<configuration> and <logger>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  7. logback logback.xml常用配置详解(二)<appender>

    转自:http://aub.iteye.com/blog/1101260 logback 常用配置详解(二) <appender> <appender>: <append ...

  8. logback logback.xml 常用配置详解

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  9. logback logback.xml 常用配置详解(转)

    本文转自:http://my.oschina.net/looly/blog/298675 推荐参考:http://blog.csdn.net/haidage/article/details/67945 ...

随机推荐

  1. C和指针 第六章 指针6.2 6.3字符串中查找的两个版本

    int find_char(char **strings, char ch) { char *string; while ((string = *strings++) != NULL) { while ...

  2. python用二进制读取文件

    python二进制读取文件 很多时候,都需要用到二进制读取文件.毕竟很多信息不是以文本的形式存储.例如:图片,音乐等等.这些东西都是有规则的二进制文件. 在python中,二进制读取采用rb的方式. ...

  3. Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 public cl ...

  4. UVALive 4849 String Phone(2-sat、01染色)

    题目一眼看去以为是4-sat... 题意:给n(n<=3000)个黑方块的坐标,保证黑方块没有公共边.对于每个黑方块选一个角作为结点,使得所选结点满足输入的一个无向图.其中距离为曼哈顿距离.输出 ...

  5. Keywords Search(hdu 2222)

    题意:给出n个单词,一篇文章,询问有几个单词在文章中出现过. /* AC自动机的裸题. 题目标号牛的一比. */ #include<cstdio> #include<cstring& ...

  6. plist文件的读取和xib加载cell

    plist 文件读取 例如在工程里倒入了plist文件 在工程里需要用到plist文件里的信息,就需要把plist文件读取出来. 如程序: -(NSArray *)moreDataArr{ if (! ...

  7. Android 笔记 day2 拨号器

  8. zookeeper选举原理

    zookeeper的领导者选举和原子广播   目录:     1.工作原理概述     2.Fast Leader选举算法(领导者选举)     3.Leader与Follower同步数据(原子广播) ...

  9. Tastypie与Backbone交互

    上回玩到Tastypie与jQuery交互,那么现在接着玩玩Tastypie与Backbone.js交互 先把上篇的template文件:D:\project\tastypie\mysite\blog ...

  10. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...