logging은 「프로그램의 진행 상황·오류·디버깅 정보를 기록하는」 표준 라이브러리입니다.
print() 대신 logging을 쓰면 「레벨별 분류·파일 기록·포맷 통일·필요 시 끄기」 같은 풍부한 기능이 자동으로 따라옵니다.
기본 사용.
import logging.
logging.basicConfig(level=logging.INFO).
logging.info("앱 시작").
logging.warning("디스크 90% 사용").
logging.error("DB 연결 실패").
5단계 레벨 — DEBUG·INFO·WARNING·ERROR·CRITICAL — 으로 메시지의 중요도를 나눕니다.
print 대비 장점.
1) 「레벨별 필터링」 — 운영 시 INFO 이상만, 개발 시 DEBUG부터.
2) 「파일·콘솔 동시 출력」 — 한 메시지를 여러 곳에.
3) 「자동 포맷」 — 시각·파일·줄 번호 자동 추가.
4) 「전역 끄기·켜기」 — 운영 환경에 따라 한 줄로 조절.
포맷 설정.
logging.basicConfig(format="%(asctime)s [%(levelname)s] %(message)s", level=logging.DEBUG, filename="app.log").
시각·레벨·메시지·파일에 모두 기록.
모듈별 로거를 만들면 더 정교한 제어가 가능합니다 — logger = logging.getLogger(__name__).
비유하자면 logging은 「병원의 환자 기록부」와 같습니다.
단순 메모(print)가 아니라 「언제·누가·어떤 레벨의 정보를 남겼는가」를 표준 형식으로 기록해, 나중에 원인 분석·감사·추적에 결정적인 자료가 됩니다.
작은 스크립트는 print로 충분하지만 본격 애플리케이션에는 logging이 필수입니다.
한 줄 요약
logging은 print보다 강력한 표준 로그 도구로, 5단계 레벨·자동 포맷·파일 기록·전역 제어가 강점입니다.
본격 애플리케이션은 print 대신 logging을 써야 합니다.
더 알아볼 것
- 로거 계층 구조와 propagation
- 로그 회전(RotatingFileHandler)
- structlog — 구조화 로그