Log4j2의 No Providers 오류와 Ignored Bindings 오류 해결

LeeYulhee·2024년 6월 10일

👉 오류 내용


  • 자바 웹 개발 워크북 책으로 실습 중 Log4j2 설정을 하게 됨
  • 책을 참고해서 Gradle을 아래와 같이 설정하고 실행
    dependencies {
    		...
        implementation 'org.apache.logging.log4j:log4j-core:2.17.2'
        implementation 'org.apache.logging.log4j:log4j-api:2.17.2'
        implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'
    }
  • 실행 후 로그는 출력되는데 아래와 같은 오류(경고) 메세지도 함께 발생
    SLF4J: No SLF4J providers were found.
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
    SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier.
    SLF4J: Ignoring binding found at [jar:file:/C:/Users/yulee/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.17.2/183f7c95fc981f3e97d008b363341343508848e/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.


👉 오류 원인 및 접근 방법


  • 공식 사이트를 참고하면, SLF4J version 2.0.0에 맞는 버전들이 나오는데, slf4j-api version 2.0.x와 slf4j-simple version 2.0.x여야 된다고 되어 있음
    • ⇒ 해당 버전이 안 맞아서 발생하는 것으로 추측

  • 해당 Github를 참고하여 implementation 'org.apache.logging.log4j:log4j-slf4j2-impl:2.17.2' 로 수정
    SLF4J: No SLF4J providers were found.
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
    • Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier. 오류는 사라졌지만 No providers 문제 계속 발생

  • MVN Repository를 참고하니 log4j-slf4j2-impl 의 최저 버전이 2.19.0으로 확인됨



👉 오류 해결 및 결과


  • 모든 log4j 관련 종속성을 2.19.0로 수정
    dependencies {
    		...
        implementation 'org.apache.logging.log4j:log4j-core:2.19.0'
        implementation 'org.apache.logging.log4j:log4j-api:2.19.0'
        implementation 'org.apache.logging.log4j:log4j-slf4j2-impl:2.19.0'
    }
  • 빌드 후 실행하니 아래처럼 더 이상 오류 메세지 보이지 않음
    00:11:04.855 [main] INFO  org.zerock.service.TodoServiceTests - ------------------------------------
    00:11:04.870 [main] INFO  org.zerock.service.TodoServiceTests - TodoDTO(tno=null, title=JDBC Test Title, dueDate=2024-06-11, finished=false)
    00:11:04.891 [main] INFO  org.zerock.jdbcex.service.TodoService - TodoVO(tno=null, title=JDBC Test Title, dueDate=2024-06-11, finished=false)
    00:11:04.927 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
    00:11:05.035 [main] INFO  com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.mariadb.jdbc.Connection@3670f00
    00:11:05.039 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
    
    종료 코드 0()로 완료된 프로세스
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글