로깅 프레임워크 비호환성
저는 작은 자바 앱을 만들고 있는데 로그백을 사용하여 로그백을 하고 싶습니다.
내 앱은 로깅을 수행하는 이전 프로젝트에 종속되어 있습니다.
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 중 하나를 사용하고 싶습니다.또, 「새로운」로깅 프레임워크가 되는 것에 대해서, 공통의 설정을 사용해 낡은 프로젝트의 로그인을 Marge 하고 싶다고 생각하고 있습니다.
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
메서드가 변경되었습니다(개체 추가[] 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-compliance-checker 도구를 사용하여 생성할 수 있습니다.
저와 비슷한 처지에 있는 사람들을 돕기 위해서...
이 문제는 종속 라이브러리가 실수로 이전 버전의 slf4j를 번들한 경우에 발생할 수 있습니다.제 경우 티카-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
'programing' 카테고리의 다른 글
VueJ에서 디스패치 및 커밋 완료 후에만 경로 트리거s (0) | 2022.10.01 |
---|---|
PHP URL에서 이미지 저장 중 (0) | 2022.09.28 |
양식이 중앙에 정렬되지 않았습니다(수직 중앙/중앙). (0) | 2022.09.14 |
Vue.js v2의 자 컴포넌트 동적 렌더링 (0) | 2022.09.14 |
Laravel에서 created_at만 사용하는 방법 (0) | 2022.09.14 |