SpringBoot整合Log4j2

同事配置了个鬼配置文件,用都用不了,配的也不对,一气之下把它改了,现在做个笔记,

方便后期用上时直接Ctrl+C\Ctrl+V

主要有一个功用:

1、控制台输出
2、日志保存到文件(按文件大小)
3、日志按级别输出到文件中

1、控制台输出

pom.xml主要配置:


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

   


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

在resources目录下添加log4j2.xml:




    
    
        
            %d{yyyy-MM-dd HH:mm:ss} %l - %msg%n
        

    


    

        
        
            
        


    


    
        
        
            
        

        
        
            
        

    


Java文件:

package com.example.t_log4j2;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TTest {

    private static final Logger logger = LogManager.getLogger(TTest.class);

    public static void main(String[] args) {
        logger.fatal(">>>{}", "fatal");
        logger.error(">>>{}", "error");
        logger.warn(">>>{}", "warn");
        logger.info(">>>{}", "info");
        logger.debug(">>>{}", "debug");
        logger.trace(">>>{}" ,"trace");
        print();
    }

    public static void print(){
        logger.info(">>>print{}", "info");
    }
}

控制台输出:

2018-09-25 11:43:59 com.example.t_log4j2.TTest.main(TTest.java:11) - >>>fatal

2018-09-25 11:43:59 com.example.t_log4j2.TTest.main(TTest.java:12) - >>>error

2018-09-25 11:43:59 com.example.t_log4j2.TTest.main(TTest.java:13) - >>>warn

2018-09-25 11:43:59 com.example.t_log4j2.TTest.main(TTest.java:14) - >>>info

2018-09-25 11:43:59 com.example.t_log4j2.TTest.print(TTest.java:21) - >>>printinfo

PatternLayout中的pattern配置参数参考:

https://logging.apache.org/log4j/2.x/manual/layouts.htmlOK,,,记录完毕! 

2、日志保存到文件 

加入配置:


             filePattern="C:/logs/t/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i.log.gz">
    
    
        
    

    

完整如下:




    
    
        
            %d{yyyy-MM-dd HH:mm:ss} %l - %msg%n
        

    


    

        
        
            
        


        
                              filePattern="C:/logs/t/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i.log.gz">
            
            
                
                
            

            
            
        

    


    
        
        
            
            
        

        
        
            
            
        

    


3、日志按级别输出到文件中

Log4j2的日志级别有:trace < debug < info < warn < error < fatal

设置level为info时,只能看到info及以上的级别日志,也就是info\warn\error\fatal

现在想把日志文件分别按debug ,info,warn...等分开保存,也就是会得到debug.log,info.log,warn.log,那么就得用上配置:,ThresholdFilter有三个参数:level\onMatch\onMismatch

level:日志级别

onMatch:匹配上

onMismatch:不匹配得上

其中onMatch可选值 :ACCEPT : 接受\DENY : 拒绝\NEUTRAL : 中性\默认:NEUTRAL

其中onMismatch可选值 :ACCEPT : 接受\DENY : 拒绝\NEUTRAL : 中性\默认:DENY

假设现在想把info的信息记录在info.log文件中,那么配置如下:


             filePattern="C:/logs/t/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i.info.log.gz">
    

    
        
        
          
          
        


    

    
        
        
    

    
    

完整的:





    
        
            %d{yyyy-MM-dd HH:mm:ss} %l - %msg%n
        

    


    

        
            
        


                              filePattern="C:/logs/t/%d{yyyy-MM-dd}/info/%d{yyyy-MM-dd}-%i.info.log.gz">

            

            
                
                
            


            
                
            


            
        


                              filePattern="C:/logs/t/%d{yyyy-MM-dd}/debug/%d{yyyy-MM-dd}-%i.debug.log.gz">

            

            
                
                
            


            
                
            


            
        


                              filePattern="C:/logs/t/%d{yyyy-MM-dd}/warn/%d{yyyy-MM-dd}-%i.warn.log.gz">

            

            
                
                
            


            
                
            


            
        


                              filePattern="C:/logs/t/%d{yyyy-MM-dd}/error/%d{yyyy-MM-dd}-%i.error.log.gz">

            

            
                
                
            


            
                
            


            
        

    


    

        
            
            
            
            
            
        


        
            
            
            
            
            
        

    


要想把日志写在tomcat目录下,可修改log4j2.xml文件中的fileName和filePattern,加入${sys:catalina.home},如:
fileName="${sys:catalina.home}/logs/info/infoabc.log"
filePattern="${sys:catalina.home}/logs/info/%d{yyyy-MM-dd}/info/%d{yyyy-MM-dd}-%i.info.log.gz"

这里日志的位置(自己的tomcat啦):D:\apache-tomcat-8.0.53\logs

 OK,记录完毕。

你可能感兴趣的:(log4j2,SpringBoot)