개발노트

고즐의 개발 및 서버 개발 노트

파이썬 logging 모듈 실전 정리, 로그 처리와 디버깅 운영 가이드

# 파이썬logging # 파이썬로그처리 # logging모듈사용법 # 파이썬디버깅 # 파이썬운영로그

Python 2025.12.17 6일 전 25 회 읽음



로그 처리가 운영 자동화의 기준인 이유

로그는 프로그램이 무엇을 했는지 남기는 기록이며 운영 자동화의 필수 요소입니다.


print 디버깅의 한계

print는 개발 단계에서는 빠르지만 운영 환경에서는 한계가 명확합니다.

언제, 어디서, 어떤 상태였는지 기록이 남지 않습니다.

자동화가 커질수록 문제 추적이 거의 불가능해집니다.


로그는 증거다

로그는 코드가 실제로 어떤 경로를 거쳤는지 보여주는 증거입니다.

에러가 재현되지 않아도 로그로 원인을 추적할 수 있습니다.

운영 환경에서는 로그가 유일한 단서가 되는 경우가 많습니다.


외주 코드에 logging이 많은 이유

외주 파이썬 코드에는 대부분 logging 설정이 포함되어 있습니다.

운영 중 발생하는 문제를 원격으로 확인해야 하기 때문입니다.

logging 구조를 이해하면 코드 의도가 훨씬 잘 보입니다.


이번 편의 학습 범위

logging 모듈 기본 사용법을 다룹니다.

로그 레벨과 파일 로그 패턴을 설명합니다.

운영 기준 로그 설계에 집중합니다.


logging 모듈 기본 구조 이해하기

logging은 메시지를 레벨별로 기록하는 표준 로깅 도구입니다.


logging 모듈의 역할

logging은 메시지를 시간과 함께 기록합니다.

콘솔 출력과 파일 저장을 동시에 처리할 수 있습니다.

파이썬 표준 라이브러리이므로 추가 설치가 필요 없습니다.


기본 import와 사용

logging은 import 후 바로 사용할 수 있습니다.

기본 설정만으로도 로그 출력이 가능합니다.

처음에는 이 구조부터 익히는 것이 좋습니다.

import logging

logging.warning("경고 메시지")
logging.error("에러 메시지")


print와 logging의 차이

print는 단순 출력이고 logging은 기록입니다.

logging은 시간, 레벨, 위치 정보를 함께 남길 수 있습니다.

운영 환경에서는 logging이 기본 선택입니다.


외주 코드에서 보이는 기본 패턴

logging.info, logging.error 형태가 가장 흔합니다.

print는 거의 사용되지 않습니다.

이 차이를 이해하면 코드 수준이 구분됩니다.


로그 레벨 이해하기

로그 레벨은 메시지의 중요도를 구분하는 기준입니다.


주요 로그 레벨 5가지

logging은 여러 단계의 로그 레벨을 제공합니다.

상황에 맞는 레벨 사용이 중요합니다.

레벨 선택이 곧 로그 품질입니다.

  • DEBUG: 디버깅용 상세 정보
  • INFO: 정상 동작 기록
  • WARNING: 주의가 필요한 상황
  • ERROR: 처리 실패
  • CRITICAL: 치명적 오류


INFO와 ERROR의 실무 차이

INFO는 정상 흐름을 기록합니다.

ERROR는 예외나 실패 상황을 기록합니다.

이 둘만 정확히 써도 운영 로그 품질이 크게 올라갑니다.


DEBUG는 언제 사용하는가

DEBUG는 개발 또는 테스트 환경에서 사용합니다.

운영 환경에서는 로그가 너무 많아질 수 있습니다.

환경별 레벨 분리가 중요합니다.


로그 레벨 선택 기준

문제가 되었을 때 확인하고 싶은 정보인지 기준으로 판단합니다.

모든 메시지를 남기면 로그는 쓰레기가 됩니다.

의미 있는 정보만 남기는 것이 핵심입니다.


파일 로그 설정 기본 패턴

운영 환경에서는 로그를 파일로 남기는 것이 기본입니다.


basicConfig로 파일 로그 설정

basicConfig는 가장 간단한 설정 방식입니다.

로그 파일 경로와 레벨을 지정할 수 있습니다.

소규모 자동화에는 이 방식으로 충분합니다.

logging.basicConfig(
    filename="app.log",
    level=logging.INFO
)


파일 로그의 장점

실행이 끝나도 로그가 남습니다.

장애 발생 시 원인 추적이 가능합니다.

서버 자동화에서는 필수입니다.


로그 파일 위치 관리

로그 파일은 별도 디렉터리에 두는 것이 좋습니다.

코드와 로그를 분리하면 관리가 쉬워집니다.

외주 프로젝트에서 자주 요구되는 구조입니다.


로그 파일 크기 주의

로그는 계속 쌓입니다.

장기 운영 시 파일 크기 관리가 필요합니다.

회전 로그는 이후 편에서 다룹니다.


예외 처리와 logging 결합

try except와 logging을 함께 사용해야 운영 코드가 됩니다.


예외 발생 시 로그 남기기

예외를 출력만 하면 기록이 남지 않습니다.

logging으로 에러를 기록해야 합니다.

운영 장애 분석의 핵심 포인트입니다.

try:
    x = int("abc")
except ValueError as e:
    logging.error(e)


에러 메시지에 맥락 추가

단순 에러 메시지보다 상황 설명이 중요합니다.

어떤 작업 중 발생했는지 기록합니다.

이 차이가 문제 해결 시간을 줄입니다.


logging.exception 활용

logging.exception은 스택 트레이스를 함께 기록합니다.

except 블록 안에서 사용합니다.

디버깅에 매우 유용합니다.


예외를 삼키지 않는다

로그만 남기고 아무 일도 없었던 것처럼 넘기면 위험합니다.

필요한 경우 예외를 다시 발생시킵니다.

통제 가능한 예외만 처리하는 것이 원칙입니다.


운영 기준 로그 설계 원칙

좋은 로그는 문제를 바로 설명해줍니다.


누가 봐도 이해되는 메시지

로그는 미래의 나 또는 다른 개발자를 위한 메시지입니다.

맥락 없는 숫자나 변수 출력은 피합니다.

행동 중심으로 기록합니다.


민감 정보 로그 금지

토큰, 비밀번호, API Key는 로그에 남기지 않습니다.

보안 사고로 이어질 수 있습니다.

외주 작업에서 특히 주의해야 합니다.


로그와 알림의 구분

모든 로그가 알림이 되어서는 안 됩니다.

치명적인 상황만 별도 알림으로 연결합니다.

이 구분이 운영 피로도를 줄입니다.


앞선 편과의 연결

9편의 예외 처리가 로그로 기록됩니다.

API, 크롤링, 파일 처리 모두 로그로 묶입니다.

이제 자동화는 운영 단계에 들어갑니다.


다음 편 예고와 학습 흐름 정리

다음 편에서는 스케줄링으로 자동화를 완전히 자동으로 만듭니다.


이번 편에서 반드시 이해해야 할 핵심

logging은 운영 자동화의 기본 장치입니다.

print를 버리고 로그를 남겨야 합니다.

예외와 로그는 항상 함께 설계합니다.


실무 자동화 수준 변화

문제 발생 시 원인을 바로 추적할 수 있습니다.

운영 중에도 코드 상태를 파악할 수 있습니다.

혼자 운영해도 버틸 수 있는 구조가 됩니다.


다음 편에서 다룰 내용

다음 편에서는 cron 개념과 스케줄링 자동화를 다룹니다.

정해진 시간에 스크립트를 실행하는 구조를 설명합니다.

완전 자동화의 마지막 퍼즐입니다.


추천 연습 방법

모든 print를 logging으로 바꿔보세요.

일부러 예외를 발생시켜 로그가 남는지 확인해보는 것이 좋습니다.

로그 파일을 읽으며 코드 흐름을 복기해보세요.

문의답변