logback配置文件


Logback常用配置详解





转载 http://blog.csdn.net/yingxiake/article/details/51274426


logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架。

Logback最常用就是在classpath定义一个lockback.xml配置文件,从而对日志进行配置输出。


<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logbackcontextName>

    <property name="log.path" value="F:\\logback.log" />

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
              <level>ERRORlevel>
        filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
            pattern>
        encoder>
    appender>

    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zipfileNamePattern>
        rollingPolicy>

        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            pattern>
        encoder>
    appender>

    <root level="debug">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    root>

    <logger name="com.example.logback" level="warn" />

configuration>
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

上面就是一个常用的日志配置模版,下面就从跟节点来解析每个节点


  1. 根节点configuration,有以下属性

a. scan,当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

b. scanPeriod,设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

c. debug,当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

  • contextName ,设置日志上下文名称,可以通过%contextName来打印日志上下文名称

  • property可以用来设置变量,可以通过${name}来访问,有以下的属性

    a. name,用于${name}访问的key

    b. value,用于${name}访问的value

    c. file ,用于指定配置文件的路径,他的作用在于,如果你有多个配置信息的话,可以直接写在配置文件中,然后通过file引入

    <property file="src/main/java/chapters/configuration/variables.properties" />
        
        
        
        
    • 1

    variables.properties如下

    log.path=F:\\demo
    log.name=mylog.log
        
        
        
        
    • 1
    • 2

    然后就直接通过${log.path}就可以访问其值

    d.resource作用和file一样,但是,它是可以直接从classpath路径下引入配置文件

    <property resource="resource.properties" />
        
        
        
        
    • 1
  • appender格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。appender有以下子节点:

    a. filter,日志输出拦截器,可以自定义拦截器也可以用系统一些定义好的拦截器

    /**
    * 日志输出拦截器
    * @author liuxg
    * @date 2016年4月28日 下午3:36:23
    */
    public class MyFilter extends Filter<ILoggingEvent> {
    
    @Override
    public FilterReply decide(ILoggingEvent event) {
    
        if (event.getMessage().contains("sample")) {
            return FilterReply.ACCEPT; //允许输入串
        } else {
            return FilterReply.DENY; //不允许输出
        }
    }
    }
    
        
        
        
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    它可以提供最大的自定义输出,如果需要用到系统定义的拦截器,例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出到文件中

    <filter   class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERRORlevel>
    filter>
        
        
        
        
    • 1
    • 2
    • 3

    b. encoder和pattern节点组合用于具体输出的日志格式

    c. file节点用来指明日志文件的输出位置,可以是绝对路径也可以是相对路径

    d. rollingPolicy日志回滚策略,在这里我们用了TimeBasedRollingPolicy,基于时间的回滚策略,有以下子节点

    fileNamePattern,必要节点,可以用来设置指定时间的日志归档,例如我们上面的例子是每天将日志归档成一个zip包

    maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置为30的话,则30天之后,旧的日志就会被删除

    totalSizeCap,可选节点,用来指定日志文件的上限大小,例如设置为3GB的话,那么到了这个值,就会删除旧的日志

    除了用TimeBasedRollingPolicy策略,我们还可以用SizeAndTimeBasedRollingPolicy,配置子节点的maxFileSize来指定单个日志文件的大小

    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    
    <file>mylog.txtfile> 
    
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
    
       
    
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txtfileNamePattern> 
    
        
    
       <maxFileSize>100MBmaxFileSize> 
    
       <maxHistory>60maxHistory> 
    
       <totalSizeCap>20GBtotalSizeCap> 
    
    rollingPolicy> 
    
    <encoder> 
    
      <pattern>%msg%npattern> 
    
    encoder> 
    
    appender>
        
        
        
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

  • root节点,必选节点,用来指定最基础的日志输出级别,他有俩个自己点可以用来应用appender,格式化日志输出

    "debug"> 
    
    ref ref="console" /> 
    
    ref ref="file" /> 
    
    
        
        
        
        
    • 1
    • 2
    • 3
    • 4

  • logger节点,可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别

    <logger name="com.example.logback" level="warn" />
        
        
        
        
    • 1




  • 你可能感兴趣的:(spring-boot)