본문 바로가기
카테고리 없음

[Java] 로그 레벨(Logging Level)

by 왕타오 2023. 11. 27.

로그(Log)란 소프트웨어 개발 과정 혹은 운영 과정에서 발생하는 문제점을 모니터링하기 위해 남겨 놓는 것이다.

 

로그가 중요하지만, 무분별하게 남기는 것은 나쁜 습관이다.

정상적이지 않은 모든 상황에서 전부 로그를 남기고 처리하게 되면, 불필요한 로그로 인해 정작 봐야할 심각한 에러 로그를 놓칠 수 있다. 

따라서 효율적인 모니터링을 위해 적정 수준에서 로그 레벨을 구분하는 것이 필요하다. 


로그 레벨은 로그 메시지에 포함된 메시지의 중요성과 심각성에 대한 대략적인 정보, 기준이라고 할 수 있다.

 

시스템에 치명적인 정도에 따른 순서는 다음과 같다.

FATAL > ERROR > WARN > INFO > DEBUG > TRACE

 

다음은 각 로그 레벨에 대한 설명이다. 

FATAL

애플리케이션의 중요한 기능이 더 이상 작동하지 않는 상태에 진입했을 때 알려주는 로그 수준이다.

데이터베이스와 같은 중요한 저장소에 연결할 수 없는 경우 이에 해당된다. 

가장 심각한 에러가 발생한 상태를 나타낸다.

 

ERROR

응용 프로그램이 하나 이상의 기능이 제대로 작동하지않아 일부 기능이 올바르지 않게 작동하지 않을 때 사용한다.

애플리케이션의 실행이 중단될 가능성이 있는 오류 등 프로그램에서 발생한 심각한 오류나 예외 상황을 나타낼 때 사용.

해당 로그 확인 시 즉시 조치가 필요할 때를 의미한다.

운영환경에서 사용 가능하다.

 

WARN

애플리케이션에서 예상치 못한 상황이나 경고 메시지를 로그로 남긴다.

경고 메시지가 발생했을 때 개발자나 관리자가 조치를 취해야 함을 알린다.

잠재적으로 문제가 될 수 있는 상황일 때 남기는 로그 레벨이다.

개발자가 조치를 취할 수 있도록 주의를 기울일 필요가 있는 상황에 사용한다.

운영환경에서 사용 가능하다.

 

INFO

애플리케이션의 시작, 중지 등 실행 상태, 요청 정보 등 중요한 이벤트를 로그로 남기는데 사용된다.

프로그램이 정상 작동할 때 나타내는 표준 로그 레벨

DB등 외부 리소스와의 상호 작용과 같은 상태 확인을 위한 이벤트를 로그로 남긴다.

시스템을 파악하는데 유익한 정보일때만 사용한다.

운영환경에서 사용 가능하다.

 

DEBUG

애플리케이션의 디버깅을 위한 로그 레벨로, TRACE보다는 자세하지 않지만 상세한 정보를 로그로 남긴다.

개발 혹은 테스트 단계에서 해당 기능들이 정상 작동 하는지 확인하기 위한 로그 레벨.

다른 로그 레벨과 다르게 운영 환경에서는 남기고 싶지 않은 로그 내용을 위한 레벨.

 

TRACE

가장 상세한 로그 레벨로, 애플리케이션의 실행 과정에서 발생하는 모든 이벤트를 로그로 남긴다.

코드를 추적하고 기능의 부분을 찾을 때 사용되는 정보이다.