Logger, Log4J? Slf4j?

2019. 11. 10. 16:56Backend

Log4J 와 Slf4j 의 차이가 뭘까? 

 

항상 로깅을 위해 import lombok.extern.slf4j.Slf4j; 를 임포트하여 사용하고 있는데 그럼 Slf4J 로거를 사용하는 것인가? Log4J 로거를 사용하고 있는 것인가? 그렇다면 logback 은 무엇인가..?

명확히 하기 위해 한번 정리하고 넘어가려 한다.

 

Log4j, logback 을 위에서 언급했지만 추가로 자바진영의 로깅 프레임워크에는 Log4j2 도 있다. log4j2 는 상대적으로 최근에 등장한 logging pramework 이다.

또한 logback log4j2 모두 log4j 를 기반으로 하고 있어서 설정하는 방법이나 사용법은 유사하다.

 

Slf4j 는 Java 진영 로깅 프레임워크들의 추상체(facade)  역할을 한다. 

예를들어 Slf4j 를 사용하여 log4j 를 구성했다면 로그 프레임워크를 추후에 logback으로 변경한다고 해도 소스코드 자체의 변경을 막을 수 있다.

 


log4j 는 꽤 오래된 로깅 프레임워크이다. 실제로 2015년에 개발 중단 발표가 있었다. 사용하지말자!!

 

이를 잇기위해 logback 이 등장했다. log4j 와 유사하지만 향상된 성능과 필터링 옵션을 제공한다. 또한 편리한 자동 리로드도 가능하다.

 

가장 최신으로는 log4j2 가 있다. logback 의 기능 대부분을 제공한다.

 

단순하게 성능 비교만 한다고 해도 현재는 log4j2  가 logback 을 전반적으로 앞서고 있다 

 

또한.

 

현재 팀에서 사용하는 대부분의 웹 서버 어플리케이션은 비동기로 작성되고 있다.

실제로 하나하나의  blocking job 이 아쉽다. Apache 에 따르면 멀티 스레드 환경에서의 Async Logger 의 경우 log4j2 가 다른 두 로거보다 몇배 이상의 처리량을 보인다고 한다. 또한 lambda 표현식과 사용자 정의 로그 레벨도 지원한다.

 

 

 

 

 

'Backend' 카테고리의 다른 글

Apache Avro  (0) 2019.11.13
Abstract Factory pattern  (0) 2019.11.12
State pattern VS strategy pattern, what is the difference?  (0) 2019.11.10
Retrofit, what is better?  (0) 2019.10.29
content length test  (0) 2019.09.30