logging.basicConfig()는 Python logging 모듈의 전역 로거를 한 번에 설정하는 함수입니다. 어디서 logger = logging.getLogger("pipeline")로 로거를 가져와도 이 설정이 공통 적용됩니다.
level=logging.INFO# 로그 레벨 계층
DEBUG # 10 — 상세 디버그 정보
INFO # 20 — 일반 진행 상황 ← 이 수준 이상만 출력
WARNING # 30 — 경고 (동작은 하지만 주의 필요)
ERROR # 40 — 에러 (일부 기능 실패)
CRITICAL # 50 — 치명적 오류
# INFO로 설정하면 INFO / WARNING / ERROR / CRITICAL 모두 출력
# DEBUG는 출력 안 됨
logging.basicConfig(level=logging.INFO)
logger.debug("안 보임") # 무시
logger.info("보임") # 출력
logger.warning("보임") # 출력
logger.error("보임") # 출력
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"각 자리표시자의 의미:
# %(asctime)s — 로그 발생 시각
# %(levelname)s — 로그 레벨 이름
# %(name)s — 로거 이름 (getLogger("pipeline")의 "pipeline")
# %(message)s — 실제 로그 메시지
# 출력 예시
# 2026-04-02 14:23:11,042 [INFO] pipeline: 파싱 완료 — 13,980자
# 2026-04-02 14:23:11,503 [ERROR] pipeline: 요약 실패: RateLimitError
handlers=[...]로그를 어디에 출력할지 지정. 여러 개 동시에 설정 가능.
handlers=[
logging.StreamHandler(), # 터미널(stdout)에 출력
logging.FileHandler("pipeline.log", encoding="utf-8"), # 파일에 저장
]
# StreamHandler — 실행 중 터미널에서 실시간으로 확인
# FileHandler — pipeline.log 파일에 누적 저장
# encoding="utf-8" 없으면 한글 깨짐
# 설정 (main.py 최상단에서 1회만)
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
handlers=[
logging.StreamHandler(),
logging.FileHandler("pipeline.log", encoding="utf-8"),
],
)
# 각 모듈에서 로거 가져오기
logger = logging.getLogger("pipeline") # main.py
logger = logging.getLogger("chunker") # chunker.py
logger = logging.getLogger("summarizer") # llm.py
# 사용
logger.info("청킹 완료 — 총 %d개", len(chunks))
logger.warning("메타데이터 추출 실패: %s", e)
logger.error("파싱 실패: %s", e, exc_info=True) # exc_info=True → 스택 트레이스 포함
pipeline.log 출력 예시2026-04-02 14:23:10,991 [INFO] pipeline: 파이프라인 시작: 한화투자증권 두산밥캣.pdf
2026-04-02 14:23:11,042 [INFO] pipeline: 메타데이터 추출 완료 — lang=ko pages=5
2026-04-02 14:23:11,318 [INFO] pipeline: 파싱 완료 — 13980자 image_based=False
2026-04-02 14:23:11,421 [INFO] pipeline: 전처리 완료 — 13025자 (6.8%↓)
2026-04-02 14:23:11,503 [INFO] pipeline: 청킹 완료 — 총 10개
2026-04-02 14:23:14,210 [INFO] pipeline: 요약 완료 — 전체요약 312자 섹션 10개
2026-04-02 14:23:14,211 [INFO] pipeline: 파이프라인 완료 — 3.2s
print vs logging 비교| 항목 | print | logging |
|---|---|---|
| 레벨 구분 | 없음 | DEBUG / INFO / WARNING / ERROR |
| 파일 저장 | 별도 구현 필요 | FileHandler로 자동 |
| 타임스탬프 | 직접 포함해야 함 | %(asctime)s로 자동 |
| 운영 환경 | 끄기 어려움 | level 조정으로 제어 |
| 스택 트레이스 | 직접 출력 | exc_info=True 한 줄 |
한 줄 요약:
logging.basicConfig()는 레벨·포맷·출력 대상을 한 번에 설정하며,FileHandler와StreamHandler를 함께 쓰면 터미널 실시간 확인과 파일 누적 저장을 동시에 처리할 수 있습니다.