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

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도 출력됨

     

     

     

    반응형