Spring Boot - Logback配置日志要考虑哪些因素


Spring Boot - Logback配置日志

出于性能等原因,Logback 目前是springboot应用日志的标配; 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式。@pdai

  • Spring Boot - Logback配置日志
    • 配置时考虑点
    • 实现范例
      • 综合范例
      • 在配置前可以参考如下文章
    • 參考文档
    • 代码示例

最全的Java后端知识体系 https://www.pdai.tech, 每天更新中...

配置时考虑点

  • 支持日志路径,日志level等配置
  • 日志控制配置通过application.yml下发
  • 按天生成日志,当天的日志>50MB回滚
  • 最多保存10天日志
  • 生成的日志中Pattern自定义
  • Pattern中添加用户自定义的MDC字段,比如用户信息(当前日志是由哪个用户的请求产生),request信息。此种方式可以通过AOP切面控制,在MDC中添加requestID,在spring-logback.xml中配置Pattern。
  • 根据不同的运行环境设置Profile - dev,test,product
  • 对控制台,Err和全量日志分别配置
  • 对第三方包路径日志控制

实现范例

如下两个例子基本包含了上述的考虑点:

综合范例

  • application.yml
logging:
  level:
    root: debug
  path: C:/data/logs/springboot-logback-demo
server:
  port: 8080
spring:
  application:
    name: springboot-logback-demo
debug: false
  • Spring-logback.xml
<?xml version="1.0" encoding="UTF-8"?>


    
    

    
    

    
    

    
    

    
    

    
    

    
    

    
    

    
    

    
    
        
        
            ${LOG_MSG}
        
    

    
    
    

    
    
        
        ${LOG_HOME}/all_${LOG_PREFIX}.log

        
        

            
            ${LOG_DIR}/all_${LOG_PREFIX}%i.log

            
            ${MAX_HISTORY}

            
            
                ${MAX_FILE_SIZE}
            

        

        
        
            ${LOG_MSG}
        
    

    
    
        
        
            ERROR
            DENY
            ACCEPT
        
        
        ${LOG_HOME}/err_${LOG_PREFIX}.log

        
        

            
            ${LOG_DIR}/err_${LOG_PREFIX}%i.log

            
            ${MAX_HISTORY}

            
            
                ${MAX_FILE_SIZE}
            
        

        
        
            ${LOG_MSG}
        
    

    
    
    
    
    
    

    
    

        
        

        
        

        
        
    


Profile 相关的配置可以参考:

<?xml version="1.0" encoding="UTF-8"?>

    
    
     
        
    	   
      		logs/springboot-logback-demo.%d{yyyy-MM-dd}.log   
      		30  
    	   
    	   
      		%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n   
    	  
  	 
   
    
	
		
		
	

    
    
        
        
        
        	
        
    
  	 

在配置前可以参考如下文章

參考文档

  • Logback官网

https://logback.qos.ch/manual/layouts.html#conversionWord

  • Logback官网 文档

https://logback.qos.ch/manual/index.html

  • Logback中Encoder Pattern

	%d{HH:mm:ss} [%thread][%X{traceId}] %-5level %logger{36} - %msg%n

https://logback.qos.ch/manual/layouts.html#conversionWord

代码示例

@See https://github.com/realpdai/springboot-logback-demo