프레임 워크 비 호환성 로깅
작은 Java 앱을 작성 중이며 로깅에 로그 백을 사용하기를 희망합니다.
내 앱은 로깅을 수행하는 오래된 프로젝트에 의존합니다.
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
... 그래서 내 계획은
org.slf4j | jcl-over-slf4j | 1.5.6
... JCL 로깅을
org.slf4j | slf4j-api | 1.6.0
... 그리고 궁극적으로
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
내 응용 프로그램은 slf4j API를 통해 로그 백을 통해 로그인 할 수 있지만 이전 라이브러리 코드는 리디렉션을 통해 동일한 위치에 로그인 할 수 있습니다.
아아, 결과
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)
나는이 항아리 중 일부에 대해 더 높고 낮은 검증 번호를 시도하고 API 문서 등을 파헤 쳤지 만 ... 문제를 찾아서 해결할 수 없습니다.
도와주세요?
로그 백은 "전략적"로깅 프레임 워크로 간주되지만 궁극적으로 내가 사용하는 로깅 메커니즘에는 약간의 여유가 있습니다. 그래도 logback 또는 log4j를 사용하고 싶고, 일반적인 구성을 통해 이전 프로젝트의 로깅을 "새"로깅 프레임 워크로 병합하려는 것이 확실합니다.
1.5.6 버전의 jcl 브릿지를 1.6.0 버전의 slf4j-api와 혼합하고 있습니다. 1.6.0에서 약간의 변경으로 인해 작동하지 않습니다. 두 가지 모두에 동일한 버전을 사용하십시오 (예 : 1.6.1 (최신)). 나는 항상 jcl-over-slf4j 브리지를 사용하고 잘 작동합니다.
메소드 의 인수 목록 이 변경되었으므로 SLF4J 1.5.11 및 1.6.0 버전이 호환되지 않습니다 ( 호환성 보고서 참조 ) org.slf4j.spi.LocationAwareLogger.log
(Object [] p5 추가).
SLF4J 1.5.11 :
LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,
String p4, Throwable p5 )
SLF4J 1.6.0 :
LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,
String p4, Object[] p5, Throwable p6 )
이 페이지의 다른 SLF4J 버전 에 대한 호환성 보고서를 참조하십시오 .
japi 준수 검사기 도구로 이러한 보고서를 생성 할 수 있습니다 .
나 자신과 비슷한 상황에있는 사람들을 돕기 위해 ...
종속 라이브러리가 실수로 이전 버전의 slf4j를 번들로 묶었을 때 발생할 수 있습니다. 제 경우에는 tika-0.8이었습니다. 참조 https://issues.apache.org/jira/browse/TIKA-556를
임시 해결책은 구성 요소를 제외하고 올바른 또는 패치 된 버전에 수동으로 의존하는 것입니다.
EG.
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>0.8</version>
<exclusions>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>edu.ucar</groupId>
<artifactId>netcdf</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<!-- Patched version 4.2-min does not bundle slf4j -->
<groupId>edu.ucar</groupId>
<artifactId>netcdf</artifactId>
<version>4.2-min</version>
</dependency>
참고 URL : https://stackoverflow.com/questions/3519978/logging-framework-incompatibility
'developer tip' 카테고리의 다른 글
JPA가있는 Kotlin : 기본 생성자 지옥 (0) | 2020.08.04 |
---|---|
PHP : 예외와 오류? (0) | 2020.08.04 |
socket.io 및 nodejs를 사용하여 서버에서 클라이언트 연결 끊기 (0) | 2020.08.04 |
분산 워크 플로를위한 git의 "간단한"vs "현재"push.default (0) | 2020.08.04 |
PHP에서 self :: $ bar와 static :: $ bar의 차이점은 무엇입니까? (0) | 2020.08.04 |