Python입출력과 예외

logging 기본

print 디버깅과 달리 logging이 왜 필요한지와, 로그 레벨과 logger 구성을 어떤 관점으로 이해하면 좋은지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

python
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info("start processing")
logger.warning("retrying request")

설명

  • print는 빠른 확인에는 편하지만, 실행 단계가 길어지거나 운영 환경으로 가면 금방 한계가 드러납니다. 로그 레벨, 출력 형식, 파일 저장, 필터링 같은 제어가 어렵기 때문입니다.
  • logging 모듈은 메시지를 단순 문자열이 아니라 "수준과 맥락을 가진 이벤트"로 다루게 해 줍니다. 그래서 개발 중 디버깅과 운영 중 관측을 하나의 체계로 연결할 수 있습니다.
  • DEBUG, INFO, WARNING, ERROR 같은 레벨은 단지 장식이 아니라, 어떤 상황을 얼마나 심각하게 볼지에 대한 합의입니다. 로그를 읽기 쉽게 만드는 첫 번째 기준이기도 합니다.
  • logger = logging.getLogger(__name__) 패턴은 모듈별로 로그 출처를 분리하는 기본 방법입니다. 프로젝트가 커질수록 이 출처 정보가 중요해집니다.
  • Python에서 logging을 익히면 예외 처리, 재시도, 배치 작업, 웹 서비스 관측까지 자연스럽게 이어집니다. 즉 문법보다 운영 감각에 더 가까운 주제입니다.

빠른 정리

요소역할
basicConfig기본 로그 설정
getLogger(__name__)모듈별 logger 생성
로그 레벨중요도 구분
장점필터링, 포맷, 저장, 운영 관측

주의할 점

로그를 너무 많이 찍으면 중요한 신호가 묻히고, 너무 적게 찍으면 문제를 재구성하기 어렵습니다. "나중에 이 문제를 추적할 때 필요한 정보인가"를 기준으로 로그를 설계하는 편이 좋습니다.

참고 링크

2 sources