[python] FastAPI에서 로그 남기기

소개

FastAPI는 Python으로 빠르게 API를 구축할 수 있는 현대적인 웹 프레임워크입니다. 개발자들은 FastAPI를 사용하여 강력하고 확장 가능한 웹 서비스를 구축할 수 있습니다. 이러한 서비스에서는 로그를 남겨 디버깅, 모니터링 및 추적에 도움이 되는 중요한 정보를 얻을 수 있습니다. 이제 FastAPI에서 로그를 남기는 방법을 알아보겠습니다.

로깅 설정하기

FastAPI에서 로그를 사용하기 위해서는 logging 모듈을 import하고 로거(logger)를 설정해야 합니다. 로거는 로그 메시지를 다양한 수준과 형식으로 관리하는 역할을 합니다.

import logging

# 로거 생성 및 설정
logger = logging.getLogger("fastapi")
logger.setLevel(logging.DEBUG) # 로그 레벨 설정 (DEBUG, INFO, WARNING, ERROR, CRITICAL)

# 로그 핸들러 생성 및 추가
handler = logging.StreamHandler()
logger.addHandler(handler)

로거를 생성한 후 로그 레벨을 설정하고, 로그 핸들러를 생성하여 로거에 추가합니다. 위의 예제에서는 단순히 콘솔에 로그를 출력하는 핸들러를 추가하였습니다.

로그 남기기

FastAPI에서 로그를 남기기 위해서는 생성한 로거(logger)를 사용하여 로그 메시지를 작성하면 됩니다.

logger.debug("Debug message")
logger.info("Info message")
logger.warning("Warning message")
logger.error("Error message")

logger.debug로 디버그 메시지, logger.info로 정보 메시지, logger.warning으로 경고 메시지, logger.error로 에러 메시지를 남길 수 있습니다.

로그 형식 지정하기

로그 메시지의 형식을 지정할 수도 있습니다. 예를 들어, 로그 메시지에 시간 정보를 추가하고 싶다면, 로그 핸들러를 생성할 때 Formatter를 사용하여 형식을 지정할 수 있습니다.

import logging

# 로거 생성 및 설정
logger = logging.getLogger("fastapi")
logger.setLevel(logging.DEBUG)

# 로그 핸들러 생성 및 추가
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)

위의 예제에서는 %(asctime)s를 사용하여 시간 정보를 포맷에 추가하였습니다. %(name)s는 로거의 이름, %(levelname)s는 로그 레벨, %(message)s는 로그 메시지를 나타냅니다.

마무리

이제 FastAPI에서 로그를 남기는 방법을 배웠습니다. 로깅을 통해 애플리케이션의 동작을 추적하고 디버그하기 용이해지며, 프로덕션 환경에서 중요한 정보를 수집할 수 있습니다. 로그 설정과 사용법을 익혀 더욱 효과적인 개발을 진행해보세요.

참고 자료