본문 바로가기
Spring

logback vs log4j2

by Jammini 2024. 1. 8.
728x90

목차

  1. 개요
  1. Log4j2
  1. Logback
  1. 결론

1. 개요

Logback와 Log4j2는 둘 다 Java 기반 프로젝트에서 사용되는 인기 있는 로깅 프레임워크다.

둘은 비슷한 목적을 가지고 있지만, 기능, 성능 및 사용 편의성 측면에서 차이가 있다. 아래 차이를 살펴보자.

2. Log4j2

Apache Log4j2 는 가장 최근에 나온 프레임워크이며, 목표는 Logback 에 포함된 일부 개선 사항을 포함하여 Log4j 에 자체 개선 사항을 제공하고, Log4j 및 Logback 의 문제를 방지하여 두 프레임워크를 모두 개선하는 것이다.

따라서 Logback 과 마찬가지로 Log4j2 는 SLF4J 에 대한 지원을 제공하며, 로깅 구성을 자동으로 다시 로드하며 고급 필터링 옵션을 지원한다.

이러한 기능 외에도 람다 표현식을 기반으로 로그 statement 를 lazy evaluation 할 수 있고, 지연 시간이 짧은 시스템을 위한 비동기 로거를 제공하며, garbage collector 작업으로 인한 지연을 방지하기 위해 garbage 가 없는 모드를 제공한다.

3. Logback

Logback 은 Log4j 를 구현한 같은 개발자가 작성했다.

Log4j 와 동일한 개념을 따르지만 성능을 개선하고 SLF4J 를 기본적으로 지원하며, 고급 필터링 옵션 및 로깅 구성의 자동 리로딩과 같은 여러 다른 개선 사항을 구현하기 위해 다시 작성되었다.

이 프레임워크는 3가지 파트로 구성된다.

  1. logback-core
    • Logback-core 는 로깅 프레임워크의 핵심 기능을 제공한다.
  1. logback-classic
    • Logback-classic 은 핵심 기능에 더 많은 기능을 추가한다.(예 : SLF4J 에 대한 기본 지원)
  1. logback-access
    • Logback-access 는 HTTP 엑세스 로그를 작성하는데 사용할 수 있도록 서블릿 컨테이너와 통합한다.

Logback 은 구성이 필요하지 않다.

기본적으로 DEBUG 수준 이상의 모든 로그 메시지를 표준 출력에 기록한다.

XML 또는 Groovy 형식의 사용자 지정 구성 파일을 사용하여 변경할 수 있다.

Logback 은 Log4j 와 동일한 개념을 사용한다.

4. 결론

어떤 로깅 프레임워크를 선택할지는 프로젝트의 요구 사항, 성능, 구성 및 라이선스 등 다양한 요소에 따라 다를 수 있다.

일반적으로 Log4j2는 더 많은 성능을 제공하고 더 복잡한 로깅 요구 사항을 처리하는 데 적합하며, Logback은 간단한 프로젝트나 간단한 로깅 요구 사항을 처리하기에 더 쉬울 수 있다.

Log4j2가 아파치에 따르면 멀티쓰레드 환경에서 비동기 로거의 경우 처리량이 18배 높고 대기시간이 더 짧다.

참고

반응형