实现自定义SpringBoot框架日志组件の二:配置文件

系列

实现自定义SpringBoot框架日志组件の一:日志系统
实现自定义SpringBoot框架日志组件の二:配置文件
实现自定义SpringBoot框架日志组件の三: 自定义pattern
实现自定义SpringBoot框架日志组件の四: 自适应

前言

上一篇 博客已经实现了自定义日志系统,,但是并没有配置任何 日志配置文件,这篇博客就来实现一下

目标

  1. 针对不同环境,提供不同的配置文件
  2. local/dev 业务日志级别为debug,且日志会输出到console,便于本地调试
  3. prod 业务日志级别为info,日志仅输出到文件,考虑到性能,不会输出到console

1. 配置文件打到 jar 包里

spring

从spring的jar结构里可以看到,spring把日志文件打到了jar包里,通过下面的代码直接加载

loadConfiguration(getPackagedConfigFile("log4j2.xml"), logFile, getOverrides(initializationContext));

观察其结构,看不出来什么,去github看源码,得到了奥秘

image.png

发现:

  1. 文件是放在 resources 里的
  2. 文件在resources里也有包名

那我们照葫芦画瓢


image.png

在idea里,如图


image.png

注意:如果直接在idea里创建,会有点问题,只有一级文件夹,名字是com.github.hwhaocool, 而不是我们期望的三级文件夹

此时,打出来的包,已经符合我的要求了(jd-gui 打开)

image.png

2. 编写配置文件 log4j2-local.xml

内容如下



    
                %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%5p} [%clr{%t}{magenta}] %highlight{%-40.40c{1.}} %clr{:}{faint} %m%n%ex
        %d{yyyy-MM-dd HH:mm:ss.SSS} %5p %t %c : %m%n%ex
    

    
        
            
        

        
        
            
            
                
                
                
                
            

            
            
        
    

    
        
        
        
        
        
        
        
        


        

        
            
            
        
    


稍微解释一下

输出

这时候运行 web-with-log ,再请求一下接口,可以看到下面的输出

image.png

看起来还不错,颜色、对齐都有了

不过还是发现一些问题:

  1. 线程名称对齐的不是很好
  2. 类名信息太简单了,包名都是缩写
  3. 只有类的信息,没有方法和行号的信息
  4. local环境下,业务的debug日志没有输出

其中1属于对齐的问题,2、3 属于信息完整的问题,4属于自适应包名的问题
1、2、3的问题的解决,将会在下一篇博客讲到
4 后面再讲

你可能感兴趣的:(实现自定义SpringBoot框架日志组件の二:配置文件)