java - Spring Boot 中的 SLF4J 冲突

标签 java spring spring-boot log4j

我的pom文件:

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.12.1</version>
        </dependency>
    </dependencies>
</project>

当我启动应用程序时,我发生了碰撞:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/krasnov/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/krasnov/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.12.1/log4j-slf4j-impl-2.12.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

如何解决?我想使用 log4j-slf4j-impl 进行日志记录。

如果我使用:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

然后在日志文件中有我的日志和更多我不需要的系统日志

最佳答案

您的项目中实现了两个记录器:

  • logback-classic
  • log4j-slf4j

    您需要排除任何一个冲突的依赖项,因为您已经决定不想排除 log4j-slf4j所以你只能排除 logback-classic 。尝试如下所示。

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions> </dependency>

关于java - Spring Boot 中的 SLF4J 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057168/

相关文章:

java - 无法将 Spring 应用程序解析为类型

java - Spring MVC 中的延迟计算

Spring Boot 1.5.8 未登录 JBoss EAP 7

java - 将 Groovy 脚本动态加载到应用服务器中

java - Spring Boot autoconfig 仍在使用 Tomcat 数据源而不是 HikariCP?

java - Spring Boot @Autowired 在运行时创建实例

java - SpringBootTest @EnabledWebSocket 忽略

java - Java是否将文件路径中的多个斜杠 "\\\\\\"视为单个 "\\"?

java - 如何停止我的服务?

java - 使用终端的问题