로깅 라이브러리 비교(스프링,자바)

nGyu·2022년 4월 20일
0

기본 로깅 유틸리티

자바에는 기본적으로 내장된 로깅 유틸리티가 존재한다.

java.util.logging 에 들어있는데, 여기에는 총 7개 레벨의 구분된 로깅을 제공한다.

SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST

왼쪽부터 highest value → lowest value 이다.

문제는 이 유틸리티가 1.4에서부터 나왔는데 이때는 이미 log4j라는 라이브러리가 잘 알려져 널리 사용하고 있어 굳이 jul을 사용할 필요가 없었다.

그리고 다른 라이브러리와 비교를 했을 때 속도도 느리며 Predefine된 레벨의 개념이 명확하지 않다라는 단점이 있다.
일반적인 사용자가 FINE, FINER, FINEST가 어떨때 사용하는지 알 수 있을까?

사용 예

private static final Logger logger = Logger.getLogger(Application.class.getName());

logger.info("new Logger");
logger.log("log");

Log4J

2020년 기준 log4j2가 나와 이 후에 제작된 프로젝트라면 log4j2를 사용하는게 좋다.

이유는 지속적인 유지보수와 기능 추가가 이루어지고있지만, log4j는 유지보수만을 가지고 있는데, 굳이 무리해서 log4j2로 넘어갈 필요는 없다.

log4j는 3개의 컴포넌트로 이루어져 있다.

logger, appender, layout

logger는 데이터를 기록하는 역할을 하며 appender는 데이터를 어디에 기록할지, layout은 어떤 스타일로 데이터를 기록할지 저장하는 역할을 한다.

사용 예

private static Logger logger = LogManager.getLogger(Application.class);

logger.info("info logger");
logger.debug("list debug logger : ", list.size());

Slf4J

이는 다른 라이브러리와의 차이점은 wrapper라는 것이다.

Wrapper ?
이는, 다른 기본형 타입을 객체로 사용해야 할때 사용되는 데이터 타입이다.

Slf4J는 Logging Framework에 대해 추상화가 되어있다. 그렇기 때문에 Slf4J를 단독으로 사용하지는 않는다.

이게 무슨소리인지 자세히 살펴보자면 Slf4J를 이용해서 개발을 할 때는 Slf4J 를 이용해서 로깅이 되는것처럼 보인다. 하지만, 설정에 따라 배포 시 Slf4J는 (Logback, Log4J, jul)중 바인딩된 Logging Framewkork가 실제 로깅 코드를 수행한다는 점이 있다.

즉, Logging Framework를 유연하게 사용할 수 있다는 것이다.

profile
지금보다 내일을, 모레를 준비하자

0개의 댓글