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'
}
오류는 아마도이 같은 더 많은 정보를 제공합니다 (항아리 이름은 다를 수 있지만)
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>
... org.codehaus.mojo cobertura-maven-plugin 2.7 test ch.qos.logback logback-classic tools com.sun ...
## I fixed with this
... org.codehaus.mojo cobertura-maven-plugin 2.7 test ch.qos.logback logback-classic tools com.sun ...
For me, it turned out to be an Eclipse/Maven issue after switch from log4j to logback. Take a look into your .classpath
file and search for the string "log4j"
.
In my case I had the following there: <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.7.1/slf4j-log4j12-1.7.1.jar"/> <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17.jar" />
Removing those entries from the file (or you could regenerate it) fixed the issue.
For me the answer was to force a Maven rebuild. In Eclipse:
- Right click on project-> Maven -> Disable Maven nature
- Right click on project-> Spring Tools > Update Maven Dependencies
- Right click on project-> Configure > Convert Maven Project
This is issue because of StaticLoggerBinder.class class belongs to two different jars. this class references from logback-classic-1.2.3.jar and same class also referenced from log4j-slf4j-impl-2.10.0.jar. both of jar in classpath. Hence there is conflict between them. This is reason of log file is not generation even though log4j2.xml file in classpath [src/main/resource].
We have so select one of jar, I recommend use log4j-slf4j-impl-2.10.0.jar file and exclude logback-classic-1.2.3.jar file. Solution: open pom file and view the dependency Hierarchy [eclipse] or run
mvn dependency:tree command to find out the dependency tree and source of dependency that download the dependency. find the conflicting dependency and exclude them. For Springboot application try this.
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
This is working fine for me after struggling a lots.
조합 <scope>provided</scope>
과 <exclusions>
저에게 효과가 없었습니다.
나는 이것을 사용해야했다.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>system</scope>
<systemPath>${project.basedir}/empty.jar</systemPath>
</dependency>
empty.jar
말 그대로 아무것도없는 jar 파일은 어디에 있습니까 ?
.m2 디렉토리를 제거하는 것으로 보입니다.
mvn install -DskipTests -T 4
나를 위해이 문제를 해결했습니다.
참고 URL : https://stackoverflow.com/questions/14024756/slf4j-class-path-contains-multiple-slf4j-bindings
'IT story' 카테고리의 다른 글
Linux에서 Windows 컨테이너를 호스팅 할 수 있습니까? (0) | 2020.05.13 |
---|---|
Mockito.verify ()를 언제 사용합니까? (0) | 2020.05.13 |
Visual Studio에서 "32 비트 선호"설정의 목적은 무엇이며 실제로 어떻게 작동합니까? (0) | 2020.05.13 |
gitgitore가 정확히 무엇입니까? (0) | 2020.05.13 |
S3를 통해 Amazon CloudFront에서 gzipped CSS 및 JavaScript 제공 (0) | 2020.05.13 |