spring5.0日志体系

 市场上日志有很多:

 jdklogging  简称jul

  log4j       

 common-logging 简称 jcl

   slf4j

 

其中 jul 和log4j是不可扩展的,好比如java中的一个类

jcl 是扩展的 好比如java中的接口 : 源码中 jcl 是for循环去判断 项目中是否有先有log4j .有就用.没有就用jul14(jdk1.4).在没有就jul13(jdk1.3) ,在没有就simplelog,但是该框架好像不维护了.

slf4j 这个现在最流行的也最牛b. 它也是可以扩展的.看官方文档也知道.他有两种技术. 绑定和桥接

个人理解这两个技术

绑定.:假设项目中使用了slf4j+log4j ,那么就是绑定了该项目用的, 如下

org.slf4j

slf4j-api

1.7.24

org.slf4j

jslf4j-log4j12

1.7.24

但是如果项目中其他人开发的时候用了jcl日志,那日志不是就很乱.一个项目有多个日志类型

所以slf4j提供了桥接技术:

桥接:把其他日志通过桥接器变成自己的

       
            org.slf4j
            slf4j-api
            1.7.24
        
        
        
            org.slf4j
            jcl-over-slf4j
            1.7.24
        

这样子整个向项目就能统一用统一日志来打印了;

spring4.0版本实现了jcl框架 :

spring5.0版本虽然也是用jcl框架.但是其加入到了自己源码中.,也就是改了jcl的源码.

首先有个静态的属性使用的日志是jul

然后有个静态代码块去判断该项目是否依赖了了

log4j2

slf4j.api

等等

如果有就把默认的jul日志替换成这个找到的依赖日志体系.

所以spring5的日志还是很强大的.....

 

 

 

 

 

 

你可能感兴趣的:(spring源码)