Spring Boot笔记:日志框架介绍SLF4j

日志框架出现了,分为两种:

  1.日志门面:相当于军队的谋士,我只负责充门面,出谋划策,水攻火攻空城计,但是我不做,你找人去做

  2.日志实现:相当于军队的士兵,我不管啥计策水啊火啊东风啊,我只需要你告诉我,我去干,我去放火,放水,借诸葛亮...

  现在的日志框架门面和实现大概有以下几种:

  1.日志门面:SLF4j , JCL ,jboss-logging

  2.日志实现:Logback , log4j ,JUL ,log4j2

  红色部分是同一个人做的,而且是比较优秀的,所以我们就采用这个人做的,门面用SLF4j,实现有俩,因为Logback是因为log4j某些性能问题而新写的一个实现,所以我们使用logback

 

  Spring默认使用的是JCL

  而我们的Spring Boot采用的是SLF4j和Logback,还不错。

 

  我们现在已经确定了,我们日志门面和实现就是使用这俩了,但是我们在工作中啊,那些项目里面的Spring,Mybaties啥的,他们都有各自的日志门面啊,都不是SLF4j,这样的话我还是要去熟悉他们的日志门面,这不智障吗?

  恩,这个严峻的问题已经被解决了,比如项目里面使用的是JCL,有一个jar包是JCL-over-SLF4j ,就是还是JCL里面的方法,但是实现调用的是SLF4J,真是不错啊。

 Spring Boot笔记:日志框架介绍SLF4j_第1张图片

Spring Boot笔记:日志框架介绍SLF4j_第2张图片

 

 

 

  Spring Boot会自动的把所有的其它日志框架给偷梁换柱到SLF4j,所以我们再引入其它的工具,例如Mybaties啥的,只需要把他们的日志框架给排除掉就行,剩下的,Spring Boot已经全部帮你做好了。

 

 

  接下来,尝试着打印一下日志,我在测试类里这样写

 
@Test public void contextLoads() { // System.out.println(person); //日志的级别,一下级别从低到高排序 trace


使用@Slf4j注解就相当于创建日志对象了,很方便,不过这个注解是lombok里面的,去maven里面下一个这个插件就好了,直接使用log进行日志记载,也可以输出变量,如上面的代码,使用{}来作为占位符

 

现在问题来了,我的日志系统只能输出文本和变量啥的,和我的System.out.println没啥区别啊,别急,日志系统的配置来了,有两种配置方式

  1. application.properties(或者yml):简单配置方式,配个输出格式,路径啥的

  2. logback-spring.xml:专业版配置方式,能配置的东西很多,开发时就用这个

 

我现在先提出两个问题,然后我们再去讲解上面的两种配置方式,看看哪种能解决问题

问题1:日志有info和error日志,我希望这两种日志区分开,存到不一样的地方,好找

问题2:我希望每天生产一个日志文件

 

带着这两个问题,我们来讲解一下日志的配置

application.yml和application.properties配置
这俩都一样,我比较喜欢yml,但是这里我都写出来,你们随意选一个

application.yml方式

logging:
pattern:
  console: "%d{yyyy-MM-dd} - %msg%n" #这个只对控制台有影响,%d是时间,{yyyy-MM-dd}是格式,%msg是输出的信息,%n是换行
path: D:/    #在D盘下创建日志,默认是spring.log,而且这个不受console的影响
file: D:/loginfo.log  #这个file和path其实差不多,唯一的区别在于file可以指定日志的名称,path默认就是spring.log改不了
level: com.vae.springboot.study=trace  #这个是说study包下的代码,都是以trace为开始的



application.properties方式

#设定日志的级别,我们com.vae这个包下面都是
logging.level.com.vae=trace
​
#默认是在控制台输出的,我们可以设定输出为一个文件,只写springboot.log就是在项目里面生成,我加了个D:/,就会在D盘生成
logging.file=D:/springboot.log
#这个和上面的意思是一样的,只不过这个是在当前文件的当前盘下面新建了一个spring文件夹下的log
logging.path=/spring/log
#设置输出格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n


很明显,这种配置顶多就是改个输出的格式,路径,我们的两个问题貌似一个都不能解决,下面来看看专业的配置

logback-spring.xml配置

在resources文件夹下面,新建一个文件,叫logback-spring.xml,内容如下




    
        
            
                %d - %msg%n
            
        
    

    
        
        
            info
            ACCEPT
            DENY
        
        
            
                %msg%n
            
        
        
        
            
            D:/info.%d.log
        
    

    
        
        
            error
        
        
            
               %d - %msg%n
            
        
        
        
            
            D:/error.%d.log
        
    

    
        
        
        
    


 

 logback-spring.xml完美的解决了我们的两个问题,很好,看看结果图吧

Spring Boot笔记:日志框架介绍SLF4j_第3张图片

 

你可能感兴趣的:(spring,boot)