System.out.println("아직도 이렇게 출력하시나요?");
운영 시스템에서는 System.out.println()
을 사용해서 필용한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다!
그동안 로그... 들어보긴 했고 쓰라고 해서 쓰긴 했지만,
왜 쓰는지 모르고 어떻게 쓰는지 몰랐기 때문에 이 글에서 간단하게 로그가 무엇인지 정리해보려고 한다!
로그(Log)
로그(Log)란, 프로그램 또는 시스템에서 발생하는 이벤트, 정보, 상태, 오류 등을 기록한 것을 말하며 이러한 로그를 생성하고 저장하는 것을 로깅(Logging)이라고 한다.
로그 :기록된 데이터
로깅 : 생성하고 저장하는 프로세스와 도구를 모두 아우르는 말
로그를 왜 써야 할까?
로그는 프로그램의 동작을 추적해 문제를 해결하거나 성능을 분석하기 위한 목적으로 활용된다. 이 때문에 로그 관리는 프로그램 개발과 운영에 아주 중요한 역할을 한다!
로그 레벨
로그 레벨
은 해당 로그 메세지가 얼마나 중요한지
를 알려주는 정보이다.
- 로그 레벨은 로깅 시스템에서 사용되며, 로그 메시지의 중요도에 따라 해당 메시지를 기록할지 결정하는데 사용된다.
- 로그 수준은 시스템 상태에 대한 중요한 정보와 순전히 유익한 정보를 필터링하는 방법으로 생각할 수 있다.
- 로그 수준은 정보 노이즈 및 경고 피로를 줄이는 데 도움이 될 수 있다.
1. TRACE
- 가장 상세한 로그 레벨
- 애플리케이션의 실행 흐름과 디버깅 정보를 상세히 기록
- 주로 디버깅 시에 사용
2. DEBUG
- 디버깅 목적으로 사용
- 개발 단계에서 상세한 정보를 기록
- 애플리케이션의 내부 동작을 이해하고 문제를 분석하는 데 도움을 줌
- 운영 환경에서는 남기고 싶지 않은 로그 메시지를 위한 레벨
3. INFO
- 애플리케이션에서 정상 작동에 대한 정보 즉, 어떤 일이 발생했음을 나타내는 표준 로그 레벨
- 애플리케이션 상태, 설정 또는 외부 리소스와의 상호 작용과 같은 상태 확인을 위한 이벤트를 나타냄
- 시스템을 파악하는 데 유익한 정보여야만 한다
- 운영 환경에서도 사용될 수 있다
4. WARN
- 경고성 메시지를 기록
- 예상치 못한 문제나 잠재적인 오류 상황을 알리는 메시지
- 이 레벨의 메세지는 개발자가 조치를 취할 수 있도록 주의를 기울일 필요가 있는 상황을 나타냄
- 운영 환경에서도 사용될 수 있다
5. ERROR
- 오류 메시지를 기록
- 심각한 문제 또는 예외 상황을 나타냄
- 능 자체가 제대로 작동하지 못하는 문제일때 남겨야 하며 즉시 조치가 필요할때를 의미
- 운영 환경에서도 사용될 수 있다
6. FATAL
- 가장 심각한 오류 메시지를 기록
- 애플리케이션의 동작을 중단시킬 수 있는 치명적인 오류를 나타냄
- 이러한 오류는 복구가 불가능하거나 매우 어려운 상황을 의미
- 일반적으로 애플리케이션에서는 사용할 일이 없음
우리에게 필요한 것은?
INFO, WARN, ERROR 레벨을 구분하는 것
- 예외 상황, 오류 상황이 모두
ERROR
일 수는 없다
- 일반적이지 않은 예외 상황이 발생했더라도, 그 상황이 개발자가 제어할 수 없는 상황이라면 이는
WARN
으로 두는 것이 좋다
단순한 상황 정보
만으로 결정할 수는 없는 문제이다
- 레벨을 선택할 때
논리적인 이유
를 가지고 일관성
있게 해야 한다
결국 로그는 문제가 발생했을 때 쉽게 문제의 원인을 파악하고 해결하기 위함