ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • log4j, logback, log4j2 비교
    Spring Framework 2023. 7. 16. 00:01

    Logback이란?

    Logback은 Java에서 가장 많이 사용되었던 로깅 라이브러리인 log4j의 후속 버전입니다.

    어떻게 보면 logback은 더욱 좋아진 log4j라고 보아도 무방합니다.

    log4j는 2015년에 단종을 발표했으며 logback은 Java 커뮤니티에서 가장 널리 사용되는 로깅 프레임워크 중 하나입니다.

    물론 log4j의 후속버전으로 lo4j2가 존재합니다.

    log4j -> logback -> log4j2 순서로 출시되었습니다.

     

    Simple Logging Facade For Java(slf4 j)는 logback이나 log4js와 같은 로깅 프레임워크의 인터페이스 역할을 수행합니다.

     

    System.out.println() vs log4j

    그냥 println으로 기록하면 안 될까요?

     

    로깅 프레임워크를 사용하지 않으면 다음과 같은 단점들이 있습니다.

     

    1. 로그 데이터가 기록되지 않는다.

    2. 에러 발생 시 추적할 수 있는 정보의 부재( 스레드, 시간 등)

    3. 로그 레벨설정 불가능

    4. 성능저하(synchronized 키워드 붙어있음)

    한 번 요청 시 5000명의 사용자를 요청하고, 처리 과정에서 응답시간이 20초 걸리는 사이트가 있는데, 원인을 알아보니 5000명의 정보를 다 System.out.println()으로 처리하고 있던 것이다. 이는 System.out.println()을 줄임으로써 응답시간이 6초까지 줄었다. - 이상민, 자바 성능 튜닝이야기, 인사이트, 2013

     

    log4j vs Logback

    logback이 log4j보다 10배 정도 빠르게 수행되며, 메모리 효율성도 좋아졌다.

    설정 파일을 변경하였을 때 서버 재기동 없이 변경 내용이 반영된다.

    2015년에 개발이 중단되었기 때문에 기존 시스템이 아니라면 사용할 이유가 없습니다.

    또한 2021년에 보안취약점이 공개되었던 적이 존재합니다.

     

    logback vs log4j2

    lo4j의 다음 버전으로 나왔으며 logback처럼 필터링 기능과 자동 리로딩을 지원합니다.

    또한 람다표현식과 사용자 정의 로그 레벨을 지원합니다.

    spring boot는 기본설정으로 logback을 사용하기 때문에 log4j2를 사용하기 위해서는 logback의존성을 제거해 주는 작업이 필요합니다.

    logback과의 큰 차이는 Multi Thread 환경에서 비동기 로거의 경우 다른 로킹 프레임워크보다 많은 처리량과 짧은 대기 시간을 제공합니다.

    https://logging.apache.org/log4j/2.x/performance.html

     

     

     

     

     

     

    참고자료

    https://logback.qos.ch/documentation.html

    https://www.baeldung.com/logback

    https://medium.com/javarevisited/logging-in-java-log4j-vs-logback-vs-slf4j-88c533088d2a

    https://hudi.blog/do-not-use-system-out-println-for-logging/

     

    댓글

Designed by Tistory.