logging을 통해 프로그램 동작 상태 등을 로그로 남길 경우,
프로그램의 사후 진단을 보다 효과적으로 할 수 있기 때문에,
문제 분석이나 디버깅 등에 유용하게 사용할 수 있음.
logging을 사용할 경우,
- 소스 코드의 수정 없이
- 모든 정보를 한꺼번에 출력하는 것이 아닌,
- 원하는 정보 레벨(log level로 지정) 이상의 로그 메시지를
- 관련 이벤트 발생 시점과 함께 기록하는 것이 가능함.
log levels
Python의 logging은 다음의 5단계의 levels를 지원함. 낮은 단계의 log level이 지정된 경우 보다 높은(=심각한) log levels가 같이 기로됨.
Level | 언제 사용되는가? |
DEBUG | 가장 낮은 심각도와 가장 상세한 수준의 정보를 가지고 있음. 주로 디버깅 등에서 문제의 원인을 파악하는데 사용됨. |
INFO | 프로그램이 정상적으로 작동하는지를 tracking하기 위한 메시지들. |
WARNING | 예상치 못한 event 또는 추후 문제가 될 수 있는 경우에 사용됨. |
ERROR | 프로그램이 의도한 기능을 수행하지 못하는 수준의 심각한 에러 발생시 사용. |
CRITICAL | 가장 심각한 수준의 에러가 발생한 경우로 프로그램의 실행이 중단될 수 있는 수준을 의미. |
간단한 사용법
logging.basicConfig 로 최초로 한번만 설정해주고 난 이후에,
logging.debug, logging.info, logging.warning, logging.error, logging.critical 등을 통해 로깅 메시지를 남김.
import logging
logging.basicConfig(
format='%(asctime)s %(levename)s:%(message)s',
level=logging.INFO,
datefmt='%m-%d-%Y %I:%M:%S %p',
)
logging.debug('debug message example!')
logging message format attributes
로그 레코드의 format에 사용되는 attributes 중 많이 사용되는 것을 간략히 정리함.
Attributer Name | Format | Description |
asctime | %(asctime)s | 사람이 읽을 수 있는 로그 레코드가 생성된 시간 2023-12-18 18:20:55, 810 형태임 (쉼표 뒤의 숫자는 밀리세컨드) |
created | %(created)f | time.time()이 반환하는 시간으로 로그 레코드가 생성된 시간 |
filename | %(filename)s | pathname 파일명 부분 |
funcName | %(funcName)s | 로깅 호출을 포함하는 function의 이름 |
levelname | %(levelname)s | Logging Level |
lineno | %(lineno)d | 로깅 호출이 일어난 소스의 line number |
message | %(message)s | 로깅 메시지. msg % args 의 형태임. |
module | %(module)s | 모듈 (filename 에서 확장자 뺀 이름) |
name | %(name)s | 사용된 logger의 이름. |
pathname | %(pathname)s | 로깅호출이 일어난 소스 파일의 전체 경로명 |
process | %(process)d | process ID |
processName | %(processName)s | process name |
thread | %(thread)d | thread ID |
threadName | %(threadName)s | thread name |
보다 자세한 건 다음 URL 참고
https://docs.python.org/3/library/logging.html#logrecord-attributes
References
https://docs.python.org/3/library/logging.html#module-logging
https://docs.python.org/3/library/logging.html?highlight=logging#module-logging
https://hwangheek.github.io/2019/python-logging/
'Python' 카테고리의 다른 글
[Term] Agile Programming Language : Agile Development (=Programming) (0) | 2024.01.06 |
---|---|
[Python] Debugging : Traceback, Stacktrace, Backtrace ... (0) | 2023.12.25 |
[Python] Terminal, WSL, Conda, and VSCode (1) | 2023.12.15 |
[Etc] Token and Tokenizer (2) | 2023.12.06 |
[Python] File Handling (1) | 2023.12.05 |