기본 콘텐츠로 건너뛰기

JAVA logging logback 1.4.5 사용시 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 에러

 


[환경]

  • IDE : STS 4
  • APP : stand-alone JAVA application ( no Spring (boot))
  • build tool : maven
  • logging lib : SLF4J + logback 1.4.5


[상황]

  1. java logging을 위해 slf4j + logback 1.4.5 라이브러리를 maven을 통해 설치
* 참고로 위와 같이 의존성 설정시 maven에서 추가로 필요한 logback-core-1.4.5.jar 와 slf4j-api.1.7.25.jar 파일을 자동 추가함.
  1. 코딩 후 application 실행
  2. 아래 메시지 나오면서 로그를 지정된 위치에 쓰기 실패


[원인분석]

  1. SLF4J: Failed to load class "org.slf4j.impl.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 버전보다 낮은 버전임

[해결]

  1. pom.xml 에 slf4j 에 대한 의존성을 아래와 같이 명시적으로 추가함.

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

댓글

이 블로그의 인기 게시물

[Tomcat] Tomcat 서버 Manager 페이지 접속하기