2019. 11. 10. 16:56ㆍBackend
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 |