自定义日志打印

1前言

打好日志关爱你我他!开发过程,关键信息打印,有助于上线后,通过日志查看了解系统运行情况,同时有助于定位线上问题.

2自定义日志级别,按照业务类型打印日志

通常的日志框架,日志都有以下几个级别,从低到高TRACE,DEBUG,INFO,WARN,ERROR,FATAL.默认情况,假如我们定义日志打印级别INFO,它会把大于等于INFO级别的日志信息打印出来.这样各个类别的日志都打印在一起不利于日志查看.因此我们希望info日志文件里只打印info信息,warn日志文件里只打印warn信息,error日志文件只打印error信息,不同的业务模块的日志打印到单独日志文件.本篇使用的日志框架是log4j.实现日志文件只打印指定日志级别是通过Filters实现的,如下:

    
    
        
        
    
           
            
        

 
        
            
            
        
        
    

因此实现按业务类型打印日志也很简单,只需要自定义日志级别,然后把大于等于它级别的日志过滤掉就可以了.下面是个样例配置




    
    %d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n






    
    
      
    


    
    
        
        
    
     
    
        
        
            
            
        

        
        
            
            
        
        
    
    
    
        
            
            
            
        
        
        
            
            
        
        
    
           
        
        
        
            
            
        
        
    

    
        
            
            
            
            
            
        
        
        
            
            
        
        
    

    
        
            
            
            
            
        
        
        
            
            
        
        
    






    
        
        
        
        
        
        
        
        
    



以上就是,配置文件了,代码里实现如下:

/**
* Created by l2h on 18-4-17.
* Desc: 自定义日志级别打印,测试类
* @author l2h
*/
  @RestController
  public class LogController {
private final Logger logger =  LogManager.getLogger(LogController.class);
private final Level BU_TWO_INFO = Level.forName("BU_TWO_INFO",480);
private final Level BU_ONE_INFO = Level.forName("BU_ONE_INFO",490);
@GetMapping("/log")
public String log(@RequestParam("msg")String msg){
    logger.log(BU_ONE_INFO,msg);
    logger.log(BU_TWO_INFO,msg);
    logger.info(msg);
    logger.error(msg);
    logger.warn(msg);
    return "success";
}
  }

调试结果如下:

自定义日志打印_第1张图片
image.png

image.png

注意 maven 引入的log4j stater与springboot 框架因为的有冲突,因此需要把springboot exclusion掉,否则会发现没有打印到日志文件中.样例代码的maven配置如下:



4.0.0

simos
springboot-quick-start
1.0-SNAPSHOT

    org.springframework.boot
    spring-boot-starter-parent
    2.0.1.RELEASE


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


通过以上配置就可以实现按业务打印,按级别打印日志文件了.log4j具体的配置可以查看官方文档.样例代码的源码.

你可能感兴趣的:(自定义日志打印)