Backend

java 의 로깅 이란 (JCL, SLF4J, log4j, logback)

!쪼렙조햄 2021. 12. 13. 14:12
반응형

spring boot 로 개발을 하다보면
디펜던시에 띢 띢 log4j, logback 을 추가해서 
사용하기만 했지,, 얘네가 어떤 애들인지 몰랐어서 알아보기로 함

# 로깅 퍼사드

JCL 은 Apache Commons Logging 이고 이를 줄여서 JCL 이라고 부른다
(Jakarta Commons Logging)

spring 에서는 기본적으로 위 JCL 을 사용하는데,
JCL 은 인터페이스 형태로 있어서, 이를 구현체와 함께 사용해야 한다.

SLF4J 는 Simple Logging Facade for Java 의 약자이다.

JCL 과 SLF4J 는 로깅 퍼사드이다.
퍼사드 패턴 (Facade Pattern)은 

건물의 정면"을 의미하는 단어로
어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴

오오..

JCL 과 SLF4J 양쪽 모두 개발을 하면서 자연스럽게 접해보게 되었는지, 
둘다 코드에서 본적이 있었다

// JCL
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
// SLF4J
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

기본이 JCL 이라면 SLF4J는 어떤 다른점 및 이점이 있어서 끼어든걸까?

# log4j, logback

디펜던시에 추가해서 사용하던 Log4j, Logback 은 로깅 기능을 실제로 구현한 프레임워크 이며,
이들이 JCL 이나 slf4j 와 함께 사용할 구현체들이다.

그래서 아래와 같이 로깅을 위한 인터페이스 + 구현체들을 조합해서 사용 가능하다

- JCL + log4j
- JCL + logback
- slf4j + log4j
- slf4j + logback

그리고 아래 링크와 같이,
JCL -> slf4j -> logback 이런식으로도 가능하다는데, 사용해보지 않았다
https://dololak.tistory.com/635

참고 링크 : http://docs.navercorp.com/java-practices/#_%EB%A1%9C%EA%B9%85_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_%EC%82%AC%EC%9D%B4%EC%9D%98_%EA%B4%80%EA%B3%84

반응형