解决SLF4J警告:Class path contains multiple SLF4J providers

问题

    最近在了解AI相关知识,搭了Spring Boot项目学习一下。在启动时报了一个SLF4J的警告,项目可以正常启动;之前有个项目也遇到过,当时工期紧没来的及细究。具体报错如下:

SLF4J(W): Class path contains multiple SLF4J providers.
SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@78a2da20]
SLF4J(W): Found provider [org.slf4j.simple.SimpleServiceProvider@dd3b207]
SLF4J(W): See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J(I): Actual provider is of type [ch.qos.logback.classic.spi.LogbackServiceProvider@78a2da20]

    这个警告信息表明类路径中包含了多个SLF4J的提供者,应该是Maven依赖的jar中存在冲突了。

    那么就先看下两个Provider归属的jar,直接在idea中搜就行;

    ch.qos.logback.classic.spi.LogbackServiceProvider类是logback-classic-1.4.14.jar中的;

    org.slf4j.simple.SimpleServiceProvider类是slf4j-simple-2.0.13.jar中的;

    logback 和 slf4j-simple 都是用于日志记录的库,它们都是SLF4J(Simple Logging Facade for Java)的实现,但它们在功能和配置上有所不同。

    Maven依赖关系如下:

    logback是spring boot官方集成的日志框架;

    slf4j-simple是alibaba-ai集成的;

 

解决

    解决就很简单啦,我这里选择将日志框架slf4j-simple排除掉,Maven -> Reload Peoject,搞定~!

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-ai</artifactId>
   <exclusions>
      <exclusion>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-simple</artifactId>
      </exclusion>
   </exclusions>
</dependency>

    如果遇到其它的日志框架冲突,解决也是一样的;

补充

    简单补充下概念:SLF4J(Simple Logging Facade for Java)是一个Java日志门面框架,提供统一的日志接口,使开发人员能够在不同的日志实现(如Logback、Log4j等)之间无缝切换,简化了日志记录的过程。与其它实现的关系是,SLF4J本身不提供实际的日志记录功能,而是作为一个日志门面,通过与各种日志实现进行交互,使得开发人员能够灵活选择最适合项目需求的日志实现。

    具体的Java日志框架发展流程,以及Logback和Log4j、Log4j2的相爱相杀,就不在这补充啦。我记得有一篇博客讲的很好,链接忘了,哈哈哈哈哈哈

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值