logback配置文件详情

1.logback 配置文件的组成

1.1root节点

root 节点是必选节点,用来指定最基础的日志输出级别,只有一个 level 属性,用于设置打印级别,可选如下:TRACE,DEBUG,INFO,WARN,ERROR,ALL,OFF

root 节点可以包含 0 个或多个元素,将appender添加进来。如下:


 
 

appender 也是子节点之一,将会在后面说明。

1.2.property节点

用于定义变量,方便使用。有两个属性:name,value。定义变量后,可以使用${}来使用变量。如下:



1.3.appender节点

​ appender中有2个必填属性--name和class。name为节点的名称,class为的全限定类名,也就是日志输出目的地的处理类。其中,encoder子节点用来控制日志的输出格式

  
      
        %-4relative [%thread] %-5level %logger{35} - %msg %n  
      
  

appender 用来格式化日志输出的节点,这个最重要。有两个属性:

  • name:该本 appender 命名
  • class:指定输出策略,通常有两种:控制台输出,文件输出

下面通过例子来说明这个怎么用:

在logback中,主要有以下三种日志目的地处理类:

1.3.1 ch.qos.logback.core.ConsoleAppender

​ 将日志输出到控制台

  
      
        %-4relative [%thread] %-5level %logger{35} - %msg %n  
      
  

1.3.2 ch.qos.logback.core.FileAppender

​ 将日志输出到具体的磁盘文件中,可以单独指定具体的位置,也可以设置日志的输出格式;

  
    e:/log.out  
    true  
    false
      
        %-4relative [%thread] %-5level %logger{35} - %msg%n  
      
 

子节点append:新增的日志是否以追加到文件结尾的方式写入到log.out文件中,true为追加,fasle为清空现存文件写入;
子节点prudent:日志是否被安全的写入磁盘文件,默认为false。如果为true,则效率低下;

1.3.3 ch.qos.logback.core.rolling.RollingFileAppender

​ 滚动记录日志,当符合rollingPolicy节点中设置的条件时,会将现有日志移到新的文件中去。rollingPolicy节点中可设置的条件为:文件的大小、时间等;


    e:/log.out
    true  
    false
    
        testLog-%d{yyyy-MM-dd}.log
        30
    
    
        %-4relative [%thread] %-5level %logger{35} - %msg%n
    

1.3.4 ch.qos.logback.classic.AsyncAppender

​ 异步记录日志,内部通过使用缓存的方式来实现异步打印,将日志打印事件event放入缓存中。具体数据结构为BlockingQueue;

  
    e:/log.out  
    true  
    false
      
        %-4relative [%thread] %-5level %logger{35} - %msg%n  
      
 
  
    0  
    512  
      
  

​ 子节点queueSize:指的是BlockingQueue的队列容量大小,默认为256个;
​ 子节点discardingThreshold:如果BlockingQueue中还剩余20%的容量,那么程序会丢弃TRACE、DEBUG和INFO级别的日志打印事件event,只保留WARN和ERROR级别的。为了保留所有的日志打印事件,可以将该值设置为0。

1.3.5 rollingPolicy

​ 日志文件的滚动策略,与RollingFileAppender搭配使用,当日志文件发生变动时决定RollingFileAppender的行为。在rollingPolicy节点中有一个class属性,可选的值为TimeBasedRollingPolicy、FixedWindowRollingPolicy、TriggeringPolicy。其中ch.qos.logback.core.rolling.TimeBasedRollingPolicy表示根据时间制定日志文件的滚动策略;


    testLog-%d{yyyy-MM-dd}.log
    30

​ ch.qos.logback.core.rolling.FixedWindowRollingPolicy表示如果日志文件大小超过指定范围时,会根据文件名拆分成多个文件;

   
   tests.%i.log.zip   
   1   
   4   
   

2.配置文件例子



    
    

    
    
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            
            UTF-8
        
    

    
    
        
        ${LOG_HOME}/timeFile/out.log
        
        
            
            ${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log.gz
            
            30
            
            
                10MB
            
        

        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            
            UTF-8
        

    
 
    
        
        0
        
        256
        
        
    
    
    
        
        
        
    

3 spring boot 使用logback日志

​ SpringBoot工程自带logback和slf4j的依赖,所以只要在maven依赖中添加了spring-boot-starter-logging即可。logback框架会默认加载classpath下命名为logback-spring或logback的配置文件。


    org.springframework.boot
    spring-boot-starter-logging

3.1 简单使用

​ 如果无需复杂的日志配置,执行简单设置日志打印级别,打印方式可直接在 application.yml 中配置。

logging:
  # 配置日志存放路径,日志文件名为:spring.log
  path: e:/log
  file:
    # 设置日志文件大小
    max-size: 20MB
  level:
    # root日志以info级别输出
    root: info
    # 此包下所有class以DEBUG级别输出
    com.demo.test: debug

3.2 多环境日志输出

​ Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置(如使用 logback-spring.xml ,而不是 logback.xml ),命名为 logback-spring.xml 的日志配置文件, spring boot 可以为它添加一些 spring boot 特有的配置项示例如下:


    
    
        
            
        
    
    
    
        
            
        
    

你可能感兴趣的:(SpringBoot,Java,logback,日志,日志配置)