logback配置详解

来源:互联网 发布:防盗门锁芯规格 知乎 编辑:程序博客网 时间:2024/05/22 23:28

原文地址:http://chenxiaoqiong.com/articles/logback/

最近公司项目进行了重构,日志管理从Log4j迁移到了LogBack。 Logback是由log4j创始人Ceki Gülcü为取代log4j而设计的又一个开源日志组件。无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进:http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j。

logback配置详解

日志级别

  1. DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的;
  2. INFO:消息在粗粒度级别上突出强调应用程序的运行过程;
  3. WARN:会出现潜在错误的情形;
  4. ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行;
  5. FATAL:指出每个严重的错误事件将会导致应用程序的退出;
  6. 另外,还有两个可用的特别的日志记录级别:
    ALL:用于打开所有日志记录;
    OFF:用于关闭所有日志记录。
    优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、 WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。

基本配置及解释

基本配置文件

    <?xml version="1.0" encoding="UTF-8"?>    <configuration>        <property name="log.charset.encoding" value="UTF-8"/>        <property name="LOG_HOME" value="log" />        <!-- 控制台输出 -->        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">            <Encoding>UTF-8</Encoding>            <layout class="ch.qos.logback.classic.PatternLayout">                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n                </pattern>            </layout>        </appender>        <!-- 按照每天生成日志文件 -->        <appender name="FILE"                  class="ch.qos.logback.core.rolling.RollingFileAppender">            <Encoding>UTF-8</Encoding>            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">                <FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>                <MaxHistory>30</MaxHistory>            </rollingPolicy>            <layout class="ch.qos.logback.classic.PatternLayout">                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n                </pattern>            </layout>        </appender>        <!-- 按照每天生成错误日志文件 -->        <appender name="FILE-ERROR"                  class="ch.qos.logback.core.rolling.RollingFileAppender">            <Encoding>UTF-8</Encoding>            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">                <FileNamePattern>${LOG_HOME}/myApp.log_error.%d{yyyy-MM-dd}.log</FileNamePattern>                <MaxHistory>30</MaxHistory>            </rollingPolicy>            <layout class="ch.qos.logback.classic.PatternLayout">                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n                </pattern>            </layout>            <!-- 下面为配置只输出error级别的日志 -->            <filter class="ch.qos.logback.classic.filter.LevelFilter">                <level>ERROR</level>                <onMatch>ACCEPT</onMatch>                <onMismatch>DENY</onMismatch>            </filter>        </appender>        <!-- 设置具体一个类日志的日志打印 -->        <loger name="com.candy.controller.TestController" level="INFO" activity="false">            <appender-ref ref="STDOUT"/>            <appender-ref ref="FILE"/>        </loger>        <root level="DEBUG">            <appender-ref ref="STDOUT" />            <appender-ref ref="FILE" />        </root>    </configuration>

配置文件节点详解

  • 设置变量: < property >
    用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。

  • 设置loger:< loger >
    用来设置某一个包或者具体的某一个类的日志打印级别、以及指定。仅有一个name属性,一个可选的level和一个可选的addtivity属性。
    name:
    用来指定受此loger约束的某一个包或者具体的某一个类。
    level:
    用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。
    如果未设置此属性,那么当前loger将会继承上级的级别。
    addtivity:
    是否向上级loger传递打印信息。默认是true。
    < loger >可以包含零个或多个< appender-ref >元素,标识这个appender将会添加到这个loger。

  • 设置root:< root >
    也是元素,但是它是根loger。只有一个level属性,应为已经被命名为”root”.
    level:
    用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。
    默认是DEBUG。
    可以包含零个或多个元素,标识这个appender将会添加到这个loger。

过滤器filter

  • 过滤器的返回值只能是ACCEPT、DENY和NEUTRAL的其中一个
    DENY:记录事件立即被抛弃,不再经过剩余过滤器;
    NEUTRAL:有序列表里的下一个过滤器会接着处理记录事件;
    ACCEPT:那么记录事件被立即处理,不再经过剩余过滤器。
    过滤器被添加到中,为添加一个或多个过滤器后,可以用任意条件对日志进行过滤。 有多个过滤器时,按照配置顺序执行。

  • 常用的过滤器:

    1. LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:
      < level >:设置过滤级别
      < onMatch >:用于配置符合过滤条件的操作
      < onMismatch >:用于配置不符合过滤条件的操作
    2. ThresholdFilter: 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
    3. EvaluatorFilter: 求值过滤器,评估、鉴别日志是否符合指定条件。

此篇文章只是自己做了一下总结,还有诸多不足,还请大家指正!

0 0