로깅 프레임워크 선택 : Logback

로그를 남겨두기 위해 사용되는 프레임워크입니다. 로그를 남겨두면 애플리케이션이 실행되는 동안 발생하는 문제점을 추적하는데 용이합니다.

스프링 부트는 기본적으로 Log4j의 구현체인 LogbackLog4j2를 제공합니다. 이중 하나를 선택하기 위해서 둘을 비교한 결과 Log4j2가 훨씬 성능적으로 좋으나, Logback이 설정 면에서 쉽고 편리할 뿐만 아니라, 러닝커브와 참고할 수 있는 자료들을 고려하여 Logback을 선택하였습니다.

로그 레벨 설정 기준

각 로그 레벨의 의미는 아래와 같습니다.

trace · 로깅의 가장 세밀한 수준으로, 애플리케이션의 세부적인 동작을 기록하는 데 사용됩니다.
debug · 개발 혹은 테스트 단계에서 기능들이 올바르게 작동하는지 확인하기 위한 로그입니다.
· 운영환경에서 남기지 않습니다.
info · 애플리케이션에서 정상 작동 정보를 나타내기 위한 로그입니다.
· info 로그를 통해 애플리케이션 상태, 설정 또는 외부 리소스와의 상호 작용과 같은 상태를 확인합니다.
· 시스템에서 유의미한 값만을 필터링하는 것이 핵심입니다.
warn · 애플리케이션에 잠재적으로 문제가 발생할 수 있는 경우 남기는 로그입니다.
· 이 레벨의 메세지는 개발자가 조치를 취할 수 있도록 주의를 기울일 필요가 있는 상황을 나타냅니다.
error · 애플리케이션에서 발생한 심각한 오류나 예외 상황을 나타내는 로그 레벨입니다.
· error 로그가 남았을 때는 심각한 상황이므로 알림 경보를 뜨게 해야 합니다.

위의 레벨을 고려하여 아래와 같이 로그를 보여주었습니다.

info 로그가 주는 정보

warn과 error의 구분

아래와 같이 warnerror 로그가 발생하는 상황을 구분 지었습니다.

| warn | (1) 클라이언트 쪽에서 유효하지 않은 값을 반환할 때 (2) 사용자의 잘못된 요청으로 로직이 정상 작동하지 않을 때 (ex. 유효하지 않은 id를 통해 객체를 조회하려 할 때) | | --- | --- | | error | (1) 외부에서 잘못된 요청이 아닌, 코드상의 문제로 자바 내부의 예외(ex. NPE, IllegalArgumentException 등)이 발생할 때 |

로그 커스텀

우리가 원하는 로그를 남기기 위해서는 spring에서 기본으로 제공하는 설정을 수정해야 합니다. 이를 위해서 logback-spring.xml파일을 만들고 설정을 커스텀했습니다.

로그 형식

팀 모모에서 남기는 로그 형식은 아래와 같습니다.

%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] [%file:%L] %msg%n

스크린샷 2024-08-08 오후 10.31.46.png

포함 정보 정보 설명
%d{yyyy-MM-dd HH:mm:ss} 로그 이벤트의 타임스탬프를 설정합니다.
로그가 발생한 시간을 알 수 있습니다.
%-5level 로그 레벨을 출력합니다.
로그 레벨을 보여, 로그 별로 적절하게 대응할 수 있습니다.
%thread 로그가 발생한 스레드의 이름을 출력합니다.
각 스레드가 어떻게 작업했는지 확인할 수 있습니다.
%file:%L 로그가 발생한 파일과 파일의 번호를 출력합니다.
코드에 문제가 발생했을 때, 문제 발생 지점의 위치를 빠르게 확인할 수 있습니다.
%msg 로그 메시지를 출력합니다.
로그에 대한 정보를 알 수 있습니다.