Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback

注:本文章主要讲的是Spring Boot中统一日志的方法,并没有讲述怎么取配置日志


今天发现了一个Spring Boot的一个叫做spring-boot-starter-logging的启动器


然后再官网的参看文档看了一下,说是使用logback记录日志,而且是Spring Boot默认的日志启动器.

Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback_第1张图片

可以看到再这个启动器的POM文件中首先引用了logback的依赖,然后又引入了jcl-over-slf4j、jul-to-slf4j、log4j-over-slf4j这三个依赖,而slf4j是logback的抽象层,他在这里使用了这三个依赖分别将jul(Java Util Logging)jcl(common logging)log4j转换成了slf4j,就是通往slf4j的桥梁。

那么我们再来看一下他转换的原理

Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback_第2张图片Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback_第3张图片

看一下jcl转换slf4j的依赖下,可以看到这个Jar包里边的包名跟jcl依赖的包名一样这样我们点开LogFactory里边看一下他是怎么通过这个一样的包名替换的。

Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback_第4张图片

可以看到他在声明LogFactory的时候直接new了一个SLF4JLogFactory,这样就实现了日志的狸猫换太子,其他的转换包也都是同样的原理,在这里久不一一叙述了。

这样我们在导入其他依赖的时候,只需要排除掉其POM文件中的日志实现依赖就可以了。

比如

Spring Boot 中统一使用logback日志的实现,并排除其他框架中的日志实现统一使用logback_第5张图片


像这样排除掉日志的实现依赖就可以了。


第一次写文章,有什么不对的地方还请在评论里支持,在这里先感谢各位了。


你可能感兴趣的:(Java,Spring)