로깅이란 ?
운영중인 애플리케이션에 문제가 발생했을 경우, 문제의 원인을 파악하기 위해 적절한 로그를 남겨주는 것이다.
Log Level
- Trace : debug보다 세분화된 정보
- Debug : 디버깅하는데 유용한 세분화된 정보
- Info : 진행상황 같은 일반 정보
- Warn : 오류는 아니지만 잠재적인 오류 원인이 될 수 있는 경고성 정보
- Error : 요청을 처리하는 중 문제가 발생한 오류 정보
로깅 라이브러리 - java.util.logging
자바 버전 1.4부터 기본적으로 제공하는 로깅 유틸리티로 java.util.logging 이 있다.
장점
- 원하는 기능이 기본적인 수준이라면 외부 라이브러리 사용 없이 로깅 가능하다.
단점
- 자바 1.4의 시점에서 이미 잘 만들어진 Log4J가 존재하였고 널리 쓰이고 있어서 사용할 이유가 없다.
- 다른 라이브러리와 비교했을 때 속도가 느리다
로깅 라이브러리 - Log4J
2020년 시점에 Log4J2 버전이 출시되어있음을 참고하자.
Log4J는 3개의 컴포넌트로 이루어져있다.
- Logger : 데이터를 기록하는 역할
- Appender : 데이터를 어디에 기록할지 정하는 역할
- Layout : 데이터를 어떤 스타일로 기록할지 정하는 역할
Log4J 기능 정리
- thread safe 하다.
- 속도가 최적화되어있다.
- 여러 종류의 appender를 지원한다.
로깅 라이브러리 - SLF4J
스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리가 함께 포함되고, 기본적으로 SLF4J, Logback과 Log4j를 사용한다.
로그 라이브러리는 Logback, Log4J 등 많은 라이브러리가 있는데, 이것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리다.
SLF4J는 인터페이스, 구현체로 Logback 같은 로그 라이브러리를 선택한다.
SLF4J와 다른 라이브러리의 차이점
- SLF4J 라이브러리는 Wrapper 되었다.
- SLF4J를 사용하여 설정에 따라 다른 로깅 라이브러리를 사용할 수 있다.