-
[Spring] Logging slf4j - log4j, logback, log4j2Spring 2021. 11. 29. 14:27
- 스프링에서 로깅을 할 때 Slf4j를 가장 많이 사용한다. Slf4j는 추상화된 로킹 프레임워크로 파사드 패턴으로 이루어진 인터페이스다. 따라서 구현체가 필요하다.
- 구현체로는 Log4j, Logback, Log4j2 가 있다.
Fig 1. Slf4j는 파사드 패턴의 인터페이스이고 구현체로 log4j, logback, log4j2가 있다. -log4j가 초창기에 제일 많이 사용 되었으나 15년 개발이 중지 되었고 성능상 매우 느려서 logback이 대안으로 나왔다.
-logback은 Springboot 환경에서 spring-boot-starter-web 안의 spring-boot-starter-logging 에 포함 되어 있기 때문에 다른 slf4j구현체를 사용하고자 한다면 gradle build시 spring-boot-starter-logging을 exclude 시켜 주어야 한다.
-log4j2는 가장 최신에 나온 프레임워크로 log4j의 다음 버전이다. 필터링 기능과 자동 리로딩 기능을 지원하며 요즘 흔하게 쓰이는 Multi Thread 환경에서 비동기로 동작하며 다른 구현체보다 로깅 처리량이 훨씬 많고 대기시간 또한 훨씬 짧다. 무엇보다 Java8부터 도입된 람다식을 지원한다.
-현재 프로젝트에서 logback이나 log4j 구현체를 사용하고 있더라고 slf4j는 인터페이스이기 때문에 구현체만 교체해주면 로거 구현체를 수월하게 변경이 가능하다.
-그래서 내가 현재 참여한 프로젝트에 성능이 제일 좋다고 알려진 log4j2를 사용하고 있다!
'Spring' 카테고리의 다른 글