인공지능 개발자 수다(유튜브 바로가기) 자세히보기

Fastapi

[FastAPI] 로그 남기기 (logging) (13)

Suda_777 2025. 2. 3. 01:30
반응형

 

 

1. 기본 logging 설정

utils/logging.py

  • Python의 logging 모듈을 사용해서 FastAPI에 로깅을 추가
  • logging.basicConfig() : 기본 로깅 설정
  • logging.StreamHandler() : 터미널에 출력하는 핸들러
  • logging.FileHandler(file_path, mode="a") : 로그 파일에 저장
  • logger = logging.getLogger("로거 이름") : logger 정의, 로거를 여러개 만든다면, 로거 이름을 각각 사용해 구분할 수 있다.
import logging
import os

# 로그 파일 경로 설정
LOG_FILE_PATH = "logs/app.log"
os.makedirs(os.path.dirname(LOG_FILE_PATH), exist_ok=True)  # logs 폴더 생성

# 기본 로깅 설정
logging.basicConfig(
    level=logging.INFO,  # 로그 레벨 설정
    format="%(asctime)s - %(levelname)s - %(message)s",  # 포맷 지정
    handlers=[
        logging.StreamHandler(),  # 터미널 출력
        logging.FileHandler(LOG_FILE_PATH, mode="a")  # 파일 저장
    ]
)

# 로거 가져오기
logger = logging.getLogger("fastapi_app")
logger.info("로깅 설정 완료")

 


2. 로그 사용하기

필요한 위치에 아래와 같이 로그를 사용해 주면 된다.

from utils.logging import logger  # 로거 가져오기

logger.info("로그 내용")  # 응답 로깅

 


3. 로그 레벨

logging.basicConfig() : 에서 설정한 로그 레벨을 기준으로 그 이상의 로그만 보인다.

예를 들어 로그 레벨을 ERROR로 설정하면

ERROR, CRITICAL만 볼 수 있다.

로그레벨 숫자 값 사용목적
DEBUG 10 상세한 디버깅 정보 출력
INFO 20 일반적인 실행 흐름 로깅
WARNING 30 잠재적인 문제 경고
ERROR 40 오류 발생 시 로깅
CRITICAL 50 심각한 오류 발생 시 로깅

 

코드 예시

import logging

logging.basicConfig(
    level=logging.ERROR, # 로그 설정 (레벨을 ERROR로 설정)
    format="%(asctime)s - %(levelname)s - %(message)s"
)

logger = logging.getLogger("fastapi_app")
logger.debug("이 로그는 보이지 않습니다.")
logger.info("이 로그도 보이지 않습니다.")
logger.warning("경고 로그도 보이지 않습니다.")
logger.error("이 로그는 보입니다!")  # ✅ ERROR 이상이므로 출력됨
logger.critical("치명적인 오류 발생!")  # ✅ CRITICAL도 출력됨

 

 

 

반응형