소개
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에서 로그를 남기는 방법을 배웠습니다. 로깅을 통해 애플리케이션의 동작을 추적하고 디버그하기 용이해지며, 프로덕션 환경에서 중요한 정보를 수집할 수 있습니다. 로그 설정과 사용법을 익혀 더욱 효과적인 개발을 진행해보세요.
참고 자료
- FastAPI 공식 문서: https://fastapi.tiangolo.com/
- Python logging 모듈 문서: https://docs.python.org/3/library/logging.html