728x90

개발 중 흔히 사용하는 print() 디버깅은 간편하지만, 보기 불편하고 실서비스에서는 사용이 적절치 않습니다. 반면 Python의 logging 모듈은 로그 레벨, 출력 처리기 등 다양한 기능을 제공하여 가독성 높은 기록과 운영 시점 모니터링에 최적화된 도구입니다. 이 글은 “print 통신이 아닌 진짜 로그 전략”을 고민하는 개발자를 위해, 기초 설정부터 구조화된 JSON 로그, 모듈 단위 로깅까지 실제 사용 사례 중심으로 설명합니다.
1. 로깅이 중요한 이유
- 문제 발생 시 실행 흐름과 오류 위치를 포착할 수 있습니다.
- 성능 모니터링이나 보안 감사 등 운영 단계에서 실질적인 가치를 제공합니다.
2. 기본 설정부터 모듈화까지
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
logger.info("Application started")
기본 로그 레벨 설정, 포맷 지정, 그리고 getLogger(__name__) 사용은 모듈 별 로깅 선언의 출발점입니다.
3. 로깅 구성의 핵심 요소 비교
| 구성 요소 | 설명 | 추천 사용법 |
|---|---|---|
| Logger | 로그 메시지를 생성하는 객체 | 모듈 단위 getLogger(\_\_name\_\_)로 구분 |
| Handler | 로그를 출력할 목적지 (파일, 콘솔, 외부 시스템) | FileHandler, StreamHandler, 장애 감시용 RotatingHandler 등 |
| Formatter | 로그 메시지 포맷 설정 | 타임스탬프, 레벨, 모듈이름 포함한 일관된 구조 |
| Filter | 로그 필터링 및 조건부 처리 | 모듈/레벨 단위 제어 시 유용 |
4. 실무 활용 팁 – 베스트 프랙티스 정리
- 적절한 레벨 사용: 개발 중에는 DEBUG, 운영 중에는 INFO 또는 WARNING.
- 모듈화 로거 사용: 루트 로거 대신 각 모듈에 로거 지정.
- 로그 파일 회전 설정: RotatingFileHandler 활용.
- 구조화 로그: JSON 포맷 활용 + contextvars 적용 권장
- 민감정보 비포함: 로그에 비밀번호/개인정보 기록 금지.
5. 진화된 로깅 방식 – 구조화 & 중앙화
단순 텍스트 로그를 넘어서 JSON 생성, 중앙 로깅 서버 연동, trace ID 첨부까지 확장할 수 있습니다. Reddit 사례에서는:
“It covers structured JSON output, centralizing logging configuration, using contextvars to automatically enrich your logs...”
structlog 같은 외부 모듈 사용도 고려해 볼 수 있습니다. :
6. 간단한 고급 설정 예제
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger("myapp")
logger.setLevel(logging.DEBUG)
handler = RotatingFileHandler('app.log', maxBytes=10_000_000, backupCount=5)
fmt = '%(asctime)s %(name)s %(levelname)-8s %(message)s'
handler.setFormatter(logging.Formatter(fmt))
logger.addHandler(handler)
logger.debug("Debug message")
logger.error("Something failed", exc_info=True)
7. 마치며
Python의 logging 모듈은 단순한 디버깅 도구를 넘어, 운영, 보안, 분석까지 대응 가능한 핵심 인프라입니다. 모듈별 로거, 일관된 포맷, 회전 핸들러, 구조체 로그 등을 적용한다면 신뢰성 높은 시스템 운영이 가능합니다.
출처
- Python 공식 문서 – logging 모듈
- ‘Python Logging Best Practices’ Guide (Carmatec)
- Real Python 튜토리얼
- 모던 로깅 팁 (Uptrace)
728x90
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] 최신 Python 시각화 라이브러리 완벽 정리 (0) | 2025.07.21 |
|---|---|
| [PYTHON] Stack Overflow 활용으로 파이썬 실력 끌어올리기 (0) | 2025.07.21 |
| [PYTHON] 파이썬 업그레이드 가이드 : 버전 전환부터 환경 관리까지 (0) | 2025.07.21 |
| [PYTHON] 2025년 기준 최신 파이썬 버전과 버전 별 특징 완벽 정리 (0) | 2025.07.21 |
| [PYTHON] 실무에 바로 적용하는 파이썬 엑셀 자동화 완전 정복 (0) | 2025.07.21 |