问题

    最近在了解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的相爱相杀,就不在这补充啦。我记得有一篇博客讲的很好,链接忘了,哈哈哈哈哈哈

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐