spring boot + logback 配置日志分级打印

终于空出时间针对前期使用的技术进行梳理,17年下半年开始,一直忙于项目接口开发工作,完全没时间进行技术梳理,springboot构建微服务项目,是针对早期的struts1 + ibatis项目进行重构,终归是上线使用了十年的老项目,各种业务场景复杂,在项目构建过程中发现springboot日志打印和传统配置方式不同,话不多说,先简单介绍一下springboot如何配置日志打印:

说道日志配置,针对线上项目可谓重中之重,没有了日志,查问题简直让人想死!由于使用了springboot,那该怎么配置日志呢?

首先发现配置日志有如下几种方式:

1、在application.properties中添加配置,

如logging.level.root=debug,添加配置级别,logging.level.org.springframework.web=debug打印spring的jar日志,但这种方式配置的日志比较粗糙;

spring boot + logback 配置日志分级打印_第1张图片

下面着重介绍另一种方式

2、由于springboot采用约定优先于配置的方式,日志文件也是,SpringBoot项目中在官方文档中(https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html)说明,默认已经依赖了一些日志框架。而其中推荐使用的就是Logback,说明一下,SpringBoot已经依赖了Logback所以不需要手动添加依赖,如下文档中说明:

测试过程中发现如何使用logback.xml,在application.properties中一些配置会不生效,查看springboot文档发现

spring boot + logback 配置日志分级打印_第2张图片

 

spring boot + logback 配置日志分级打印_第3张图片

最根本的原因: 即,logback.xml加载早于application.properties,所以如果你在logback.xml使用了变量时,而恰好这个变量是写在application.properties时,那么就会获取不到,只要改成logback-spring.xml就可以解决。 

那如何配置logback-spring.xml文件打印想要的日志呢,

(1)首先建立该文件,放到src下面的resource目录下,springboot就会自动扫描加载,如图

spring boot + logback 配置日志分级打印_第4张图片

(2) 完成配置样本如下:




    
    SpringBootLogbacK
    
    
    
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_error.log
        
        
            
            ${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            error
            ACCEPT
            DENY
        
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_debug.log
        
        
            
            ${LOG_PATH}/${APPDIR}/debug/log-debug-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            debug
            ACCEPT
            DENY
        
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_info.log
        
        
            
            ${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            info
            ACCEPT
            DENY
        
    
    
     
    
        
        ${LOG_PATH}/${APPDIR}/log_mybatis.log
        
        
            
            ${LOG_PATH}/${APPDIR}/mybatis/log-mybatis-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n
            utf-8
        
        
        
           
            ACCEPT
            DENY
        
    

    
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            debug
        
    


	 
    
    
    	
    
    
    
		
	
	
	
    
    
        
        
        
        
        
        
		
        
        
    

(3)如果要把logback-spring.xml外置到jar外,可以在jar的同目录下建立文件夹config,在config文件夹下放入 application.properties,并在该文件中添加如下配置

logging.config=./config/logback-spring.xml

这样如果在生成环境要想修改配置,不需要重新发布jar,只需要按按生产环境的配置好就可以了,测试环境也可以这样,配置一次,不需要每次跟着jar更新而更新

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