[maven-2] SLF4J : 클래스 경로에 여러 SLF4J 바인딩이 포함됨

다음과 같은 오류가 발생합니다. sl4j에 바인딩 된 여러 로깅 프레임 워크가있는 것 같습니다. 이 문제를 해결하는 방법을 잘 모르겠습니다. 도움을 주시면 감사하겠습니다.

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.



답변

충돌을 일으킨 종속성 (pom.xml)에 다음 제외를 추가하여 해결되었습니다.

<exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
</exclusions> 


답변

Gradle 버전;

configurations.all {
    exclude module: 'slf4j-log4j12'
}


답변

오류는 아마도 이와 같은 더 많은 정보를 제공 할 것입니다 (jar 이름은 다를 수 있지만)

SLF4J : [jar : file : / D : /Java/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar! / org / slf4j / impl / StaticLoggerBinder에서 바인딩 발견 .class] SLF4J : [jar : file : / D : /Java/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.8.2/log4j-slf4j-impl-2.8.2.jar에서 바인딩이 발견되었습니다. ! /org/slf4j/impl/StaticLoggerBinder.class]

충돌은 두 개의 이름을 항아리에서 오는 것을 발견 logback-classic-1.2.3하고 log4j-slf4j-impl-2.8.2.jar.

mvn dependency:tree이 프로젝트 pom.xml 상위 폴더에서 다음을 실행하십시오 .

의존성 트리 충돌

이제 무시하고 싶은 것을 선택하십시오 (세련된 노력을 기울일 수 있으므로 더 많은 도움이 필요합니다)

나는에서 수입 하나를 사용하지 않기로 결정 spring-boot-starter-data-jpa을 통해 (상단 의존성을) spring-boot-starter과 통해 spring-boot-starter-logging, 치어가된다 :

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

위 치에 spring-boot-starter-data-jpa사용 것이다 spring-boot-starter하는 배제 동일한 파일 구성 logging(포함 된 logback)


답변

SBT 버전 :

exclude("org.slf4j", "slf4j-log4j12")전 이적으로 포함하는 종속성에 추가 합니다 slf4j-log4j12. 예를 들어 Log4j 2.6과 함께 Spark를 사용하는 경우 :

libraryDependencies ++= Seq(
  // One SLF4J implementation (log4j-slf4j-impl) is here:
  "org.apache.logging.log4j" % "log4j-api" % "2.6.1",
  "org.apache.logging.log4j" % "log4j-core" % "2.6.1",
  "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.6.1",
  // The other implementation (slf4j-log4j12) would be transitively
  // included by Spark. Prevent that with exclude().
  "org.apache.spark" %% "spark-core" % "1.5.1" exclude("org.slf4j", "slf4j-log4j12")
)


답변

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

나는 이것을 삭제하여 해결했다 : spring-boot-starter-log4j2


답변

그 jar 파일을 무시하거나 제거했습니다.

여기에 이미지 설명을 입력하십시오


답변

필요한 의존성 만 사용하고 전부는 아닙니다 :))). 나에게 로깅 프로세스의 정상적인 작업을 위해서는이 종속성이 필요합니다. 다른 것들을 pom.xml에서 제외하십시오.

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.8</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.1.8</version>
    </dependency>