Java&Web

[Logging] slf4j, log4j, logback, log4j2

프로그래민 2020. 12. 29. 18:09
반응형

로그(log)는 소프트웨어의 이벤트를 기록하는 것으로써, 소프트웨어의 동작상태를 파악하고 문제가 발생했을 때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해 디자인 되었다. 즉, 소프트웨어의 디버깅이나 모니터링을 위하여 정보를 기록하는 곳에 사용되는데 기존의 Debugger나 println에 비해 로그는 다음과 같은 장점이 있다

  • 상활별 Level을 지정하여 Level별 메세지를 선택가능
  • 응용 프로그램의 실행에 대한 흐름과 에러 확인 가능
  • 프레임워크를 이용하여 간단하고 쉬운 사용환경 조성 가능
  • 모듈 별로 유연하게 메세지 출력 가능
  • 자유로운 출력 위치 및 다양한 출력 형식 지원

Java에서는 이러한 로그에 대해 여러 프레임워크가 존재한다. 로깅 프레임워크에는 slf4j, log4j,l logback, log4j2등 과 같은 것들이 존재하고 이것들에 대해 알아보았다.

 

slf4j란

slf4j는 Simple Logging Facade For Java의 약자로써 자체적인 로킹 프레임워크가 아니고 logger 추상체로써 다른 로깅 프레임워크가 접근할 수 있도록 도와주는 추상화 계층이다. 즉, logback이나 log4j2와 같은 로킹 프레임워크의 인터페이스의 역할을 해준다. 따라서 slf4j2를 이용하면 코드를 일정하게 유지하면서 구현체의 전환을 통해 다른 로깅 프레임워크로의 전환을 쉽고 간단하게 할 수 있다. 

로깅 프레임워크의 인터페이스의 역할을 하는 slf4j

 

log4j란

log4j는 가장 오래된 로깅 프레임워크로써 Apache의 Java기반 로깅 프레임 워크이다. 콘솔 및 파일 출력의 형태로 로깅을 도와주며 xml, properties로 환경을 구성할 수 있다. 현재는 2015년 기준으로 개발이 중단되었다. log4j는 다음과 같은 구성을 가지고 있다.

log4j의 구성

요소 설명
Logger 출력할 메시지를 Appender에게 전달
Appender 전달된 로그를 어디에 출력할 것인지 결정(Console, File, JDBC 등)
Layout 로그를 어떤 형식으로 출력할 것인지 결정

log4j의 로그 레벨

로그 레벨 설명
FATAL 아주 심각한 에러가 발생한 상태
ERROR 요청을 처리하는 중 문제가 발생한 상태
WARN 실행에는 문제가 없지만 향후 에러의 원인이 될 수있는 경고성 메세지
INFO 상태변경과 같은 정보성 메세지
DEBUG 개발시 디버그 용도로 사용하는 메세지
TRACE 디버그 레벨 보다 상세한 이벤트를 나타내는 메시지

FATAL > ERROR > WARN > INFO > DEBUG > TRANCE

 

logback이란

logback이란 log4j 이후에 출시된 보다 향상되고 가장 널리 사용되고 있는 Java 로깅 프레임워크중 하나이다. slf4j의 구현체로써 동작하는 logback은 Springboot 환경의 경우는 spring-boot-starter-web안에 spring-boot-starter-logging의 logback이 기본적으로 포함되어 있어서 별다른 dependency 추가 없이 사용할 수 있다.

spring-boot-starter-web의 하위에 있는 logback

logback은 log4j에 비해 향상된 필터링 정책 및 기능(ex. 로그인 한 경우 logging 등등)과 로그 레벨 변경등에 대해 서버 재시작 없는 자동 리로딩을 지원해준다.

참고링크 : log4j와 logback 비교

 

log4j2란

가장 최신에 나온 로깅 프레임워크로써 Apache의 log4j의 다음 버전이다. logback처럼 필터링 기능과 자동 리로딩을 지원한다. logback과의 가장 큰 차이는 Multi Thread 환경에서 비동기 로거(Async Logger)의 경우 다른 로깅 프레임워크보다 처리량이 훨씬 많고, 대기 시간이 훨씬 짧다. 또한, Java8부터 도입된 람다식을 지원하고, Lazy Evalutaion을 지원한다.

참고링크 : log4j와 log4j2 비교

Multi Thread 환경에서 로깅 프레임워크 성능비교

 

출처
logging.apache.org/log4j/2.x/performance.html
www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:logging:log4j_2:%EC%84%A4%EC%A0%95_%ED%8C%8C%EC%9D%BC%EC%9D%84_%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94_%EB%B0%A9%EB%B2%95
jeong-pro.tistory.com/154
bcho.tistory.com/1312
www.slf4j.org/manual.html

반응형