SpringBoot中使用logback配置异步日志实现每个控制层类一个日志文件

首先说明在springBoot高版本中(1.5之后)不在使用log4j作为日志输出,而是使用的log4j2,本文章采用logback实现异步日志。

异步日志的好处:在高并发高流量响应延迟要求比较小的系统中同步打日志已经满足不了需求了,同步打日志会阻塞调用打日志的线程,而打日志本身是需要写磁盘的,所以会造成rt增加。异步日志就是为了解决这个问题。下面借用别人的两张图:

SpringBoot中使用logback配置异步日志实现每个控制层类一个日志文件_第1张图片

如上图,多个业务线程打印日志时候要等把内容写入磁盘后才会返回,所以打日志的rt就是写入磁盘的耗时。 

SpringBoot中使用logback配置异步日志实现每个控制层类一个日志文件_第2张图片

如上图多个业务线程打印日志时候是把打印任务放入内存队列后就直接返回了,而具体打印日志是有日志系统的一个日志线程去队列里面获取然后执行,可见这种打印rt就是写入内存队列的耗时 

下面主要看代码,我使用的是xml的格式  logback.xml这样的文件,springBoot中只要你引入相应spring-boot-starter-web的jar包就已经包含logback日志包,把这个文件放在resources下就可以自动扫描到否则的话需要在application.yml文件中配置

 

 SpringBoot中使用logback配置异步日志实现每个控制层类一个日志文件_第3张图片

下面主要是配置文件




    
    
    
    
    
    
    
    
        
            ${FILE_LOG_PATTERN}
            utf8
        
    
    
    
        
            INFO
            ACCEPT
            DENY
        
        ${log.home}/info.log
        
            ${log.home}/%d{yyyy-MM-dd}/info/info-%d{yyyy-MM-dd}-.log
            ${log.max.history}
        
        
            ${FILE_LOG_PATTERN}
        
    
    
    
        
            WARN
            ACCEPT
            DENY
        
        ${log.home}/warn.log
        true
        
        
            ${log.home}/%d{yyyy-MM-dd}/warn/warn-%d{yyyy-MM-dd}-%i.log
            
            ${log.max.file.size}
            ${log.max.history}
        
        
            ${FILE_LOG_PATTERN}
        
    
    
    
        
            ERROR
            ACCEPT
            DENY
        
        ${log.home}/error.log
        true
        
        
            ${log.home}/%d{yyyy-MM-dd}/error/error-%d{yyyy-MM-dd}-%i.log
            
            ${log.max.file.size}
            ${log.max.history}
        
        
            ${FILE_LOG_PATTERN}
        
    

    
    
        
        0
        
        1024
        
        true
        
    
    
        0
        512
        true
        
    
    
        0
        512
        true
        
    


    
    
        
        
        
        
    

    
    
        
        
            
            ${log.home}/%d{yyyy-MM-dd}/info/userController-%d{yyyy-MM-dd}-%i.log
            ${log.max.file.size}
            ${log.max.history}
        
        
            
            
                
                ${FILE_LOG_PATTERN}
            
        
        
        
    

    
    
        

        
    



yml文件中添加配置 

 

启动项目,日志打印就输出文件和控制台了

SpringBoot中使用logback配置异步日志实现每个控制层类一个日志文件_第4张图片 

 

你可能感兴趣的:(Spring,Boot)