반응형

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도 출력됨
반응형
'Fastapi' 카테고리의 다른 글
[FastAPI] FastAPI 속도개선 - 캐시(Cache) (15) (0) | 2025.02.04 |
---|---|
[FastAPI] pytest 사용법 (14) (0) | 2025.02.03 |
[FastAPI] 공통 코드(Common Code) 작성 방법 (12) (0) | 2025.02.02 |
[FastAPI] 디자인 패턴-스키마 패턴(11-7) (0) | 2025.02.02 |
[FastAPI] 디자인 패턴-레포지토리 패턴(11-6) (0) | 2025.02.02 |