Logging

이담호·2024년 10월 17일

1. Logging 이란?

어떤 소프트웨어가 실행할 때 발생하는 이벤트를 추적할 수 있도록 프로그램 실행 중 기록(로그)를 남기는 것.

간단히 System.out.println()을 사용해 콘솔 로그를 남기는 것도 로깅에 해당한다.

Spring에서는 일련의 로깅 라이브러리를 제공하고 있다.

1.1 Logging 라이브러리

Spring에서 사용할 수 있는 logging 관련 라이브러리는 대표적으로 log4j, logback, log4j2가 있고,

이들을 통합해서 인터페이스로 제공하는 Slf4j 라이브러리가 있다.

log4jlogbacklog4j2 순서로 등장했다.

log4j 는 2015년 이후로 지원이 종료되었다.(deprecated)

1.2 로깅 사용 장점

  1. 스레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.

  2. 로그 레벨에 따라 개발서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.

  3. 시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 출력 혹은 저장할 수 있다.

  4. 특히 파일로 남길 때에는 일별, 특정 용량에 따라 로그를 분할할 수 있다.

  5. println을 썼을 때보다 내부 버퍼링, 멀티 스레드 등의 환경에서 성능이 좋다.

1.3 로그 레벨

1. TRACE

가장 상세한 로그 레벨이다.

어플리케이션의 실행 흐름을 자세하게 추적하는 용도로 사용된다.

TRACE 로그는 디버깅과 문제 해결에 도움이 되는 세부 정보를 제공한다.

TRACE 로그는 매우 상세하고 많은 양의 정보를 기록하기 때문에, 프로덕션 환경에서는 주로 사용하지 않고 개발이나 테스트 단계에서 문제를 분석하고 디버깅할 때 활용된다.

2. DEBUG

어플리케이션의 상태와 흐름을 추적하고 디버깅 정보를 기록하는 용도로 사용된다.

DEBUG 로그는 어플리케이션의 중요 이벤트, 메소드 호출, 변수 값 등의 디테일한 정보를 
기록하며, 개발자가 어플리케이션의 동작을 자세히 분석할 수 있게 도와준다.

개발 및 테스트 단계에서 문제를 해결하고 어플리케이션 동작을 확인하는 용도로 주로 활용된다.

3. INFO

어플리케이션의 주요 이벤트와 상태 정보를 기록하는 용도로 사용된다.

어플리케이션의 실행 상태를 파악하고 중요한 정보를 기록하기 위해 활용되며, 
핵심적인 동작과 관련한 정보를 기록한다.

4. WARN

어플리케이션에서 잠재적인 문제가 발생할 수 있음을 나타내는 경고 메시지를 기록하는 용도로 사용된다.

잠재적인 문제 상황을 알려주고, 어플리케이션의 실행에 영향을 주지 않는 
경고 메시지를 기록한다.

5. ERROR

어플리케이션에서 심각한 오류가 발생했음을 나타내는 로그 레벨이다.

주로 어플리케이션 실행에 치명적인 문제가 발생하여 정상적인 동작이 불가능할 때 사용된다.

예외 상황, 중요한 오류 메시지, 예상치 못한 동작 등을 기록한다.

6. FATAL

가장 심각한 오류를 나타낸다.

어플리케이션이 중단되는 상황에서 기록되며, 어플리케이션의 실행이 더 이상 진행될 수 없다는 것을 알려준다.

어플리케이션의 중대한 문제를 파악하고 조치하기 위해 필요하다.

예를 들어 데이터베이스의 연결 오류, 보안 침해 또는 중요한 서비스의 중단과 관련된 문제 등이 있을 수 있다.

  • 개발 환경: TRACE, DEBUG, INFO까지 모두 활성화하여 최대한 많은 정보를 수집하고, 시스템의 모든 세부 사항을 추적할 수 있도록 설정한다.
  • 운영 환경: 주로 INFO, WARN, ERROR만 기록하여 중요한 이벤트와 오류에만 집중하고, 성능 저하를 방지한다.

출처

https://haon.blog/spring/logging-slf4j/

[Spring] Logback으로 로깅(Logging)하기

https://velog.io/@posasac/Spring-Log-Level-로그-레벨


메모

로그파일이 많이 쌓이면 어떻게 될지

0개의 댓글