spring-boot中logback日志配置

spring-boot为我们提供了非常多的组件,也让其使用起来越来越灵活易用。最近在优化程序日志输出部分,发现spring-boot在1.x中日志的配置还不够完善,所以不得不引用外部logback配置文件来代替原始的配置。方式是在spring-boot的参数配置中指定外部logback配置文件

logging.config=classpath:logback-spring.xml

spring-boot-1.x版本

我们可以在spring-boot.1.5.x.jar中找到包路劲com.springframework.boot.logging.logback下四个关键的xml配置文件base.xml、console-appender.xml、file-appender.xml、default.xml,将他们组装后可以得到一个完整的logback的xml配置文件



    
    
    
    
    
    

    
        org.springframework.boot
    

    
    
    
    
    
    
    
    
    
    
    
        
    
    
        
    
    
    
    
    
    
        
            ${CONSOLE_LOG_PATTERN}
            utf8
        
    
    
    
    
        
            ${FILE_LOG_PATTERN}
        
        ${LOG_FILE}
        
            
            ${LOG_FILE}.%i
        
        
            
            10MB
        
    
    
    
        
        
    


从上面的完整配置中我们可以看到1.5.x版本中logback的详细,这里有三个不足之处

  • 1、文件分片没有带上日期,无法直观判断分片属于哪个日期的。
  • 2、文件分片未进行压缩,当日志输出非常大的时候空间占用非常大。
  • 3、SizeBasedTriggeringPolicy政策配置中限制了文件大小为10M,不支持外部配置,且不支持日志保存的最大时间配置。

这就是为什么我要采用外部xml的方式配置logback的主要原因。其实logback原生支持这些特性的配置,只不过spring-boot没有为我们保留在从application.properties(application.yml)文件中设置的入口。

spring-boot-2.x版本

截止目前spring-boot最新版本刚刚发布了2.0.0RC1,但是官方已经提供了更多的logback外部配置支持。同样的方式我们将base.xml、console-appender.xml、file-appender.xml、default.xml组装成完完整的logback的xml配置文件




    
    
    
    
    

    
    
    
    
    
    
    
    
    
    
        
            ${CONSOLE_LOG_PATTERN}
        
    
    
    
        
            ${FILE_LOG_PATTERN}
        
        ${LOG_FILE}
        
            
            ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
            
            ${LOG_FILE_MAX_SIZE:-10MB}
            
            ${LOG_FILE_MAX_HISTORY:-0}
        
    
    
        
        
    

可以看到2.0.0版本后在file-appender.xml文件中logback增加了LOG_FILE_MAX_SIZE和LOG_FILE_MAX_HISTORY两个参数配置,同时fileNamePattern标签中的日志分片支持带上日期后进行gz方式压缩。而且都支持外部配置文件中进行配置(配置问夹中参数名与xml中并不相同),例如

#单个日志文件大小默认是10M
logging.file.max-size=50MB
#日志最大保持时间
logging.file.max-history=7

如果我们还想修改其他地方也可以根据spring-boot提供的logging.开始的参数名进行配置,详情可参考一篇CSDN上的博客,这里不再赘述。

总结

spring-boot-2.x版本后,我们几乎不需要再引用外部logback.xml或者logback-spring.xml文件来配置logback了。官方提供了绝大部分情况下的配置支持。

你可能感兴趣的:(spring-boot中logback日志配置)