Springboot2.0 配置Log4j的Slf4j冲突问题

Springboot2.0 配置Log4j的问题

springboot自带的日志是spring-boot-starter包下的LogBack日志。如果想改为Log4j的话,需要注意哪些问题呢?

问题一:springboot版本号问题

在这里插入图片描述
如图,我这里用到的springboot版本是:2.0.5.RELEASE 。直接引入Log4j包,省略版本号的写法,会报错。找不到Log4j。

**原因**:spring-boot-starter-log4j的最新版本是:**1.3.8.RELEASE**,省略版本是写法是**2.0.5.RELEASE**,自然找不到。

**解决方法**:加上版本号。

问题二:Slf4j依赖冲突问题

在这里插入图片描述

如图,我们直接引入了**spring-boot-starter-web**和**spring-boot-starter-log4j**包。
**运行异常**:Slf4j版本冲突![在这里插入图片描述](https://img-blog.csdnimg.cn/20191216165755519.png)

**原因**:新引进的spring-boot-starter-log4j包和spring-boot-starter-web包下的spring-boot-starter包下的Logback包(**三层关系**)中的Slf4j冲突。

**解决方法**:移除spring-boot原有的日志包。如图

在这里插入图片描述
移除后,继续run,依然报slf4j冲突,为什么呢?明明已经移除了孙子的依赖。

问题三:Slf4j依赖冲突问题是maven标签导致的吗?

我们先来熟悉下maven的exclusion标签:
1、我们知道Logback是传递依赖进来的,它们的关系如下:
spring-boot-starter-web–>spring-boot-starter–>spring-boot-starter-logging
我们上面是在一级依赖移除三级依赖。我本来以为只能移除直属的包,不能移除孙子(下下层)的包。然后看maven官网对于exclusion标签的介绍,没毛病啊,能移除下下层的依赖啊
在这里插入图片描述

maven官网对exclusion标签的介绍:http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html?spm=a2c4e.10696291.0.0.1d3919a4FqX9gW#

2、既然官网说不是,我还是尝试了下:
我把maven代码改成如下:
在这里插入图片描述
运行项目,居然,slf4j冲突解决了。。。
wtf??

问题四:为什么重新引用starter包,移除log就能生效?

为什么重新引用spring-boot-starter包,移除log就能生效?我在spring-boot-starter-web移除就无效?
回到问题本身,Slf4j版本冲突。
问:那是谁和谁冲突?
答:log4j和lobback中的slf4j冲突。
问:能不能找到冲突的包?
问:如何找到冲突的包?

灵光一闪,管它springboot还是啥,看依赖。pom文件右键看jar包依赖:
在这里插入图片描述
在这里插入图片描述

最终发现,是springboot的定时器包引用了spring-boot-starter。虽然我们在spring-boot-starter-web移除了,但还是有依赖,所以最好的办法就是上面的配置,重新引用starter,然后移除logging。
在这里插入图片描述

总结

其实,官网的配置已经很规范了。我们看官网怎么配的。虽然走了些弯路,但总算把问题解决了。主要的问题就是包冲突,要学会如何查看、处理包冲突。
在这里插入图片描述

官网地址:https://docs.spring.io/spring-boot/docs/1.5.19.RELEASE/reference/htmlsingle/#howto-configure-log4j-for-logging

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值