본문 바로가기
[JAVA]

slf4j, log4j, log4j2, logback & logging level 요약 정리

by 팡펑퐁 2023. 5. 22.
728x90

log(로그)

  • 소프트웨어의 이벤트를 기록하는 것으로 일반적으로 동작 상태를 파악하여 문제가 발생했을 때 원인을 찾아내고 해결하기 위해 사용한다.
  • 로그를 찍는 것은 디버그와 system.out에 비해 여러 장점을 가지고 있다.
    • 상황별로 Level을 지정하여 Level에 맞는 메시지를 선택할 수 있다.
    • 응용프로그램의 실행에 대한 흐름과 에러를 확인할 수 있다.
    • 프레임워크를 이용하여 간단하고 쉬운 사용환경을 조성한다.
    • 모듈 별로 유연한 메시지 출력이 가능하다.
    • 자유로운 출력 위치 및 형식을 지원한다.

 

 

SLF4J(Simple Logging Facade for Java)

  • 다양한 로깅 프레임워크에 대한 추상화를 제공하므로 개발자가 로깅 프레임워크를 플러그인하고 변경할 필요 없이 상호 교환하며 사용할 수 있다.

 

Log4j와 Log4j2

  • Apache의 Log4j는 오픈 소스 Java 기반 로깅 유틸리티 프레임워크로 한 때 널리 사용되었지만 현재는 사용되지 않는다. 대신에 Log4j2가 나왔는데 이는 현재 가장 효율적인 최신 로깅 프레임워크로 여겨진다. Log4j2는 로그 메세지의 중요성과 심각도를 구분하는 데 도움을 주는 다양한 로깅 수준을 지원한다. 또한 로그 메세지 필터링, 여러 대상에 대한 로깅, 서버 재시작이 필요없는 자동 리로딩과 같은 기능을 제공한다. Logback과의 큰 차이는 멀티 스레드 환경에서 비동기 로거의 경우 처리량이 훨씬 많고 대기 시간은 짧다는 점이 있다.

 

로깅 레벨(chatGPT 설명)

  • TRACE: 응용 프로그램 실행 중에 세분화된 정보를 제공하는 메시지에 사용되는 가장 세부적인 수준입니다.
  • DEBUG: 응용 프로그램의 흐름과 동작을 추적하기 위한 디버깅 메시지에 사용됩니다. 디버그 로그는 일반적으로 추적 로그보다 더 장황합니다.
  • INFO: 애플리케이션 실행의 진행 상황 또는 이정표를 강조 표시하는 정보 메시지에 사용됩니다.
  • WARN: 잠재적인 문제나 향후 문제를 일으킬 수 있는 상황을 나타냅니다. 이러한 메시지는 경고 역할을 하지만 반드시 오류를 나타내는 것은 아닙니다.
  • ERROR: 애플리케이션 실행 중 발생하지만 애플리케이션을 종료할 정도로 심각하지 않은 오류를 나타냅니다.
  • FATAL: 가장 높은 심각도 수준으로 애플리케이션 종료로 이어질 수 있는 심각한 오류를 나타냅니다.

 

 

Logback

  • Log4j의 개발자가 개발했다고 알려져 있으며 Log4j에 비해 향상된 성능과 유연성을 제공한다. 예를 들면 향상된 필터링 정책과 로그 레벨 변경에 대해 서버 재시작이 필요없는 자동 리로딩을 지원한다. Log4j와 동일한 로깅 수준 및 구문에 대한 구성을 가지고 있어 두 프레임워크에 간에 쉽게 마이그레이션이 가능하다. Logback은 spring-boot-starter-web 안에 있는 spring-boot-starter-logging에 포함되어 있어 별다른 의존성 추가 없이 사용할 수 있다. 

 

로깅 레벨(chatGPT 설명)

  • TRACE: 상세하고 세분화된 로깅 메시지에 사용되며 일반적으로 애플리케이션 디버깅 및 추적 중에 유용합니다.
  • DEBUG: Log4j 2의 DEBUG 수준과 유사하게 애플리케이션의 동작을 추적하기 위해 메시지를 디버깅하기 위한 것입니다.
  • INFO: 응용 프로그램 실행의 진행 상황 또는 중요한 이벤트를 나타내는 정보 메시지에 사용됩니다.
  • WARN: Log4j 2의 WARN 수준과 유사하게 주의가 필요할 수 있는 잠재적인 문제 또는 상황을 나타냅니다.
  • ERROR: Log4j 2의 ERROR 수준과 유사하게 응용 프로그램 실행 중에 발생하는 오류를 나타냅니다.
  • FATAL: 가장 높은 심각도 수준으로 Log4j 2의 FATAL 수준과 마찬가지로 응용 프로그램 종료로 이어질 수 있는 심각한 오류를 나타냅니다.

 

 

 

참고

chatGPT

https://minkwon4.tistory.com/161

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

 

728x90