로깅
개요
자바에서 사용하는 로깅 라이브러리는 여러가지가 있다. 그 차이점을 잘 모르고 사용했는데 정리해보자.
로깅
프로그램에서 여러 문제 상황이 생긴다.
누군가 말하기를
버그를 찾을 때 에러가 발생하는 경우 불켜진 방에서 검은 고양이를 찾는 것과 같다. 에러가 발생하지 않는 경우는 불꺼진 방에서 검은 고양이를 찾는 것과 같다.
이런 경우 뿐만 아니라 통계 정보, 성능과 관련된 지표들을 확인할 수 있는 등 여러모로 유용하다.
로그를 출력하는 방법에는 여러가지가 있는데 가장 간단하게는 System.out.println()
메소드를 통해 출력하는 방법이 있다.
그러나 에러 레벨과 같은 구체적인 정보를 제공할 수 없다는 점과 출력이 완료될 때까지 쓰레드 락이 걸리게 되어 사용하는 것이 좋지 못하다고 한다.
자바에서도 기본 로깅 라이브러리를 제공하는데 java.util.logging
으로 기본적으로 내장되어있어 별도의 의존성을 추가할 필요가 없다. 그러나 기능이 제한적이고 설정이 까다로워 사용하지 않는다.
그리고 아파치 재단에서 개발한 Log4j2
가 있다.
다양한 출력을 지원하고 비동기적으로 동작한다.
Logback
은 Log4j의 후속으로 만들어진 라이브러리로 스프링부트의 디폴트 로깅 라이브러리다.
Log4j보다 성능이 뛰어나고 더 적은 메모리를 사용하는 등의 장점이 있다.
이런식으로 여러가지 로깅 라이브러리가 있는데 이를 편리하게 사용할 수 있도록 slf4j(Simple Logging Facade for Java)라는 인터페이스가 제공되는데
퍼사드 패턴이 적용되어 유연하게 바꾸어가며 사용할 수 있다.