티스토리 뷰
728x90
로그 레벨(Log Level)은 애플리케이션이 실행되는 동안 기록되는 로그의 중요도나 심각도를 구분하는 기준입니다. 이를 통해 어떤 종류의 이벤트를 기록할지 결정하고, 나중에 로그 파일을 분석할 때 발생한 문제의 원인을 찾거나 애플리케이션의 동작 상태를 확인할 수 있습니다. 각 로그 레벨은 특정한 종류의 메시지를 의미하며, 중요도에 따라 다섯 가지로 나눌 수 있습니다.
주요 로그 레벨
- DEBUG:
- 의미: 디버깅 목적으로 사용되며, 개발 중에 발생하는 상세한 정보를 기록합니다. 실행 흐름이나 변수 값 등을 추적할 때 유용합니다.
- 사용 예시: 함수 호출 시 파라미터 값이나 로직의 세부 단계.
- 언제 사용?: 개발 중에 애플리케이션의 상태를 세밀하게 추적할 때 사용합니다.
- INFO:
- 의미: 일반적인 정보를 기록하며, 애플리케이션의 정상적인 동작을 나타냅니다. 주로 중요한 이벤트나 작업이 성공적으로 완료되었음을 알리는 로그입니다.
- 사용 예시: 서버가 시작되었거나, 사용자 로그인 성공 등의 정보.
- 언제 사용?: 시스템 상태나 중요한 정보의 흐름을 모니터링할 때 사용합니다.
- WARNING:
- 의미: 주의가 필요한 상황이나 문제가 발생할 수 있는 이벤트를 기록합니다. 애플리케이션은 계속 동작하지만, 잠재적으로 문제를 일으킬 수 있는 상황을 나타냅니다.
- 사용 예시: API 호출 실패 시 재시도, 용량이 거의 다 찬 디스크 경고 등.
- 언제 사용?: 문제는 아니지만, 주의 깊게 살펴볼 필요가 있는 상황에서 사용합니다.
- ERROR:
- 의미: 오류가 발생했지만, 애플리케이션이 계속 동작할 수 있는 문제를 기록합니다. 문제를 해결하지 않으면 기능이 제대로 동작하지 않을 수 있습니다.
- 사용 예시: 데이터베이스 연결 실패, 파일을 읽지 못하는 경우.
- 언제 사용?: 시스템이 특정 요청을 처리하는 데 실패했을 때 사용합니다.
- CRITICAL:
- 의미: 치명적인 오류가 발생하여 애플리케이션이 계속해서 동작할 수 없거나 심각한 문제가 발생했을 때 기록합니다. 즉각적인 조치가 필요합니다.
- 사용 예시: 시스템 충돌, 메모리 부족, 데이터 손실.
- 언제 사용?: 애플리케이션이나 시스템 전체에 중대한 영향을 미치는 오류가 발생했을 때 사용합니다.
로그 레벨의 설정과 사용
로그 레벨은 기록할 로그의 중요도에 따라 결정되며, 각각의 로그 레벨에 맞는 메시지만 기록되도록 설정할 수 있습니다. 예를 들어, 로그 레벨이 WARNING으로 설정된 경우, DEBUG와 INFO 수준의 로그는 기록되지 않고, WARNING 이상의 로그만 기록됩니다.
로그 레벨 예시 코드 (Python의 logging 모듈)
import logging
# 로그 레벨 설정 (INFO 이상만 기록)
logging.basicConfig(level=logging.INFO)
# 각 로그 레벨별 메시지
logging.debug("이것은 디버그 메시지입니다.") # 기록되지 않음
logging.info("정보: 애플리케이션이 정상적으로 시작되었습니다.") # 기록됨
logging.warning("경고: API 호출이 실패했습니다. 재시도합니다.") # 기록됨
logging.error("오류: 파일을 찾을 수 없습니다.") # 기록됨
logging.critical("치명적 오류: 시스템이 곧 종료됩니다.") # 기록됨
이 코드는 로그 레벨을 INFO로 설정했기 때문에 DEBUG 메시지는 기록되지 않으며, INFO 이상의 로그만 기록됩니다.
정리
- DEBUG: 개발 및 디버깅을 위한 상세한 로그.
- INFO: 애플리케이션의 정상 동작을 기록하는 일반 로그.
- WARNING: 문제를 일으킬 수 있는 상황.
- ERROR: 실패한 요청이나 처리 중 발생한 오류.
- CRITICAL: 치명적인 문제로, 즉각적인 조치가 필요한 상황.
이러한 로그 레벨을 적절하게 사용하면 애플리케이션의 동작 상태를 효율적으로 모니터링하고, 발생한 문제를 신속히 해결할 수 있습니다.
728x90
'알아두면 쓸데 있는 > 코딩 지식' 카테고리의 다른 글
Git에 이미 커밋한 특정 파일, 폴더 추적을 중지하려면? (0) | 2024.09.18 |
---|---|
PostgreSQL(포스트그레SQL)이란? (2) | 2024.09.16 |
엔진엑스(Nginx)란? (3) | 2024.09.16 |
웹서버(Web Server)란? (0) | 2024.09.16 |
Gunicorn(Green Unicorn)이란? (0) | 2024.09.16 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- x.y.z (메이저.마이너.패치)
- math.h
- ajax (asynchronous javascript and xml)
- react router
- 원시값(primitive)
- defaultdict
- inp
- core web vitals
- react
- Collections
- 시맨틱 버전(semantic versioning
- useEffect
- 쉽게 풀어쓴 C언어 Express
- pwa(progressive web app)
- counter
- styled-components
- json.parse(json.stringify())
- 프로세스 강제 종료
- chrome extension 자동 배포
- Jest
- named export vs default export
- 소프트웨어 버전 관리
- javascript 필수 문법
- 중첩 함수(nested function)
- stdlib.h
- public vs assets
- semver)
- structuredclone()
- mermaid-cli
- jackson 라이브러리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함