자동화 스크립트가 「조용히 죽는」 것보다 무서운 게 없습니다.
cron으로 매일 도는 작업이 한 달 전부터 실패하고 있었다면 발견조차 어려움.
로깅이 운영의 눈입니다.
기본 패턴.
import logging.
logging.basicConfig(filename="app.log", level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s").
logging.info("작업 시작").
logging.error("실패: %s", e).
파일에 시간·레벨·메시지로 기록.
RotatingFileHandler.
로그가 무한정 커지면 디스크 차서 시스템 마비.
from logging.handlers import RotatingFileHandler.
handler = RotatingFileHandler("app.log", maxBytes=10_000_000, backupCount=5).
10MB마다 로테이션, 5개까지 보관.
외부 알림 핸들러.
logging.handlers.SMTPHandler(에러를 메일로), 또는 슬랙 웹훅을 호출하는 커스텀 핸들러.
ERROR·CRITICAL 레벨만 즉시 알림 → 정상은 파일만, 비상은 즉시 통지.
구조화된 로깅 — JSON.
평문 로그는 사람이 읽기엔 좋지만 분석은 어려움.
python-json-logger로 JSON 형식 출력 → ELK·Datadog 같은 로그 분석 도구가 자동으로 파싱·검색·집계.
운영 시스템의 표준.
한 줄 요약
자동화 스크립트는 logging 필수.
시간·레벨·메시지 + RotatingFileHandler로 디스크 보호 + ERROR는 즉시 알림 + JSON 구조화로 분석 가능.
더 알아볼 것
- loguru — 더 쉬운 로깅 라이브러리
- Sentry — 에러 추적 SaaS
- logrotate — OS 차원 로테이션