목차
- 개요
- Log4j2
- Logback
- 결론
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가지 파트로 구성된다.
- logback-core
- Logback-core 는 로깅 프레임워크의 핵심 기능을 제공한다.
- logback-classic
- Logback-classic 은 핵심 기능에 더 많은 기능을 추가한다.(예 : SLF4J 에 대한 기본 지원)
- logback-access
- Logback-access 는 HTTP 엑세스 로그를 작성하는데 사용할 수 있도록 서블릿 컨테이너와 통합한다.
Logback 은 구성이 필요하지 않다.
기본적으로 DEBUG 수준 이상의 모든 로그 메시지를 표준 출력에 기록한다.
XML 또는 Groovy 형식의 사용자 지정 구성 파일을 사용하여 변경할 수 있다.
Logback 은 Log4j 와 동일한 개념을 사용한다.
4. 결론
어떤 로깅 프레임워크를 선택할지는 프로젝트의 요구 사항, 성능, 구성 및 라이선스 등 다양한 요소에 따라 다를 수 있다.
일반적으로 Log4j2는 더 많은 성능을 제공하고 더 복잡한 로깅 요구 사항을 처리하는 데 적합하며, Logback은 간단한 프로젝트나 간단한 로깅 요구 사항을 처리하기에 더 쉬울 수 있다.
Log4j2가 아파치에 따르면 멀티쓰레드 환경에서 비동기 로거의 경우 처리량이 18배 높고 대기시간이 더 짧다.
참고
'Spring' 카테고리의 다른 글
@NotNull @NotBlank @NotEmpty를 뭐가 다를까? (1) | 2024.02.01 |
---|---|
상태검증 vs 행위검증 (0) | 2024.01.29 |
__**JDK Dynamic Proxy vs CGLIB Proxy**__ (0) | 2023.12.29 |
__ExceptionHandler와 ControllerAdvice를 알아보자__ (0) | 2023.12.19 |
스프링의 삼각형은 무엇일까? (1) | 2023.12.18 |