JAVA logging logback 1.4.5 사용시 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 에러
Published by BONGSEON KIM on December 22nd, 2022
[환경]
- IDE : STS 4
- APP : stand-alone JAVA application ( no Spring (boot))
- build tool : maven
- logging lib : SLF4J + logback 1.4.5
[상황]
- java logging을 위해 slf4j + logback 1.4.5 라이브러리를 maven을 통해 설치

* 참고로 위와 같이 의존성 설정시 maven에서 추가로 필요한 logback-core-1.4.5.jar 와 slf4j-api.1.7.25.jar 파일을 자동 추가함.

- 코딩 후 application 실행
- 아래 메시지 나오면서 로그를 지정된 위치에 쓰기 실패

[원인분석]
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 메시지로 구글링
- SLF4J 공홈에 아래와 같은 내용 찾음 (https://www.slf4j.org/codes.html#StaticLoggerBinder)

붉은색 박스 부분 해석:
slf4j-api 버전 2.0.x 이상은 ServiceLoader 메커니즘을 사용합니다. slf4j-api 2.x를 대상으로 하는 logback 1.3 이상과 같은 백엔드는 org.slf4j.impl.StaticLoggerBinder와 함께 제공되지 않습니다. slf4j-api 2.0.x를 대상으로 하는 로깅 백엔드를 배치하는 경우 클래스 경로에 slf4j-api-2.x.jar가 필요합니다. 관련 FAQ 항목도 참조하십시오
- 이해한 바로는, logback 1.3 이상의 버전은 slf4j-api 2.0 버전을 대상으로 하며, slf4j-api 2.0 버전 이상은 org.slf4j.impl.StaticLoggerBinder를 포함하지 않는다.
- 결국 내가 사용한 logback 1.4.5 는 반드시 2.x 이상의 버전을 사용해야 한다는 말...
- 위에서 적은 것처럼, maven 빌드 툴에서 logback 1.4.5 의존성 설정 후 자동으로 추가해 준 slf4j 버전은 1.7.25 임... 2.x 버전보다 낮은 버전임
[해결]
- pom.xml 에 slf4j 에 대한 의존성을 아래와 같이 명시적으로 추가함.

- 위와 같이 추가 후 빌드 후 재실행
- 아래와 같이 에러메시지가 없어지고 설정한 대로 로깅 작동함...

댓글
댓글 쓰기