springboot集成log4j2日志框架


默认日志Logback

SLF4J——Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象。Java日志框架众多——常用的有java.util.logging, log4j, logbackcommons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各类日志框架的binding。

Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。所以使用log4j2日志框架的时候,需要排除 logging 日志框架。

官方测试报告:https://logging.apache.org/log4j/log4j-2.3/manual/async.html

1. application.properties

配置logging.config=classpath:log4j2.xml,如果不配置默认读取的是resources下的log4j2.xml 。

2.maven 依赖


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


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

3.log4j2.xml 文件

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





    
    
        
        payment
        
        
        /payment

        
        
        D:/logs/${fileName}
        
        
        
        

        
        
        [%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{bright,blue}][%style{%t}{bright,cyan}] [%highlight{%-5level}{STYLE=Logback}][%style{%logger{36}}{yellow}] - %msg%n%style{%throwable}{red}
        
        
        
        
        [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%level] [%C(%M)] [%L line] - %m%n
        

        
        20MB
        
        INFO

        
        
        ${basePath}/info.log
        
        ${basePath}/gz/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz
        
        100
        
        1
        
        true

        
        
        ${basePath}/warn.log
        
        ${basePath}/gz/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz
        
        100
        
        1
        
        true

        
        
        ${basePath}/error.log
        
        ${basePath}/gz/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz
        
        100
        
        1
        
        true

        
        
        ${basePath}/debug.log
        
        ${basePath}/gz/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz
        
        100
        
        1
        
        true

        
        
        INFO
    

    
    
        
        
            
            
            
            
        

        
        
            
            
            
            
        

        
        
            
            
                
                
            
            
            
                
                
            
        

        
        
            
            
                
                
            
            
            
                
                
            
        

        
        
                     ignoreExceptions="true">
            
            
                
                
            
            
            
                
                
            
        


        
                     ignoreExceptions="true">
            
            
                
                
            
            
            
                
                
            
        
    

    
    
        
        
            
            
            
            
            
        

        



    

4.日志文件结构