SpringBoot 使用log4j2的配置过程

前言

日志接口(slf4j)

slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback)。

接口用于定制规范,可以有多个实现,使用时是面向接口的(导入的包都是slf4j的包而不是具体某个日志框架中的包),即直接和接口交互,不直接使用实现,所以可以任意的更换实现而不用更改代码中的日志相关代码。

日志实现(log4j、logback、log4j2)

Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。

LogBack:logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现。

Log4j2:Log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活。

配置过程

springboot默认是用logback的日志框架的,所以要在pom中配置排除logback。这里需要注意的是,其实不止一处使用了logback,所以要在starter中统一排除,然后引入log4j2。

涉及的POM部分文件


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

   
    org.springframework.boot
    spring-boot-starter-log4j2  

log4j2配置文件,默认命名为log4j2.xml。 程序会会自动加载,如果命名为log4j2-xx.xml。需要在在SpringBoot配置文件application.properties中引入该配置文件,增加一行:logging.config=classpath:log4j2-xx.xml




  
    
    
        
        sky-hello
        
        ./logs/${APP_NAME}
        
        ${LOG_PATH}/backup
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} | %blue{%traceId} | %highlight{%-5p} | %magenta{${sys:PID}} | %yellow{%t} | %cyan{%l} : %msg%n
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} | %traceId | %-5p | ${sys:PID} | %t | %l : %msg%n
    

    
    
        
        
        
            
            
            
            
            
            
                
                
                
                
            
            
            
        

        
        
            
            
            
                
                
            
        
    


    
    

        

        
        
            
            
            
        

        
            
            
            
        

    

代码中使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
private final Logger log = LoggerFactory.getLogger(this.getClass());
 
log.info("info")

最后附加 log4j的格式配置参数

%n - 换行

%m - 日志内容,输出代码中指定的日志信息

%p - 日志级别(FATAL,   ERROR,   WARN,   INFO,   DEBUG   or   custom)

%r - 程序启动到现在的毫秒数

%% -  输出一个"%" 字符

%t - 当前线程名

%d - 日期和时间, 常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}

%l - 同 %F%L%C%M

%F - java源文件名

%L - java源码行数

%C - java类名,%C{1} 输出最后一个元素

%M - java方法名

到此这篇关于SpringBoot 使用log4j2的配置的文章就介绍到这了,更多相关SpringBoot log4j2配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(SpringBoot 使用log4j2的配置过程)