[python] FastAPI 서버 로그 관리 방법

FastAPI는 강력하면서도 빠른 성능을 가진 웹 프레임워크로, 서버 로그를 적절히 관리하는 것이 중요합니다. 이번 글에서는 FastAPI 서버에서 로그를 관리하는 다양한 방법을 알아보겠습니다.

1. 기본 로깅 설정

FastAPI 애플리케이션에서 기본 로깅 설정을 사용하여 로그를 기록할 수 있습니다.

import logging

logger = logging.getLogger(__name__)

logger.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)

logger.addHandler(stream_handler)

위 예제에서는 기본 로깅 설정을 통해 INFO 레벨 이상의 로그를 콘솔에 출력하는 방법을 보여줍니다.

2. 외부 로깅 시스템 연동

FastAPI 서버의 로그를 외부로 전달하여 관리하는 것이 유용합니다. 이를 위해 다양한 외부 로깅 시스템과 연동할 수 있습니다. 예를 들어, AWS CloudWatch나 ELK 스택과 같은 시스템에 로그를 전송할 수 있습니다.

from logging.handlers import RotatingFileHandler

file_handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=1)
file_handler.setFormatter(formatter)

logger.addHandler(file_handler)

위 코드는 RotatingFileHandler를 사용하여 파일로 로그를 저장하는 방법을 보여줍니다. 또한, FastAPI에서 외부 로깅 시스템을 사용하기 위해 다양한 라이브러리를 제공하므로, 해당 라이브러리를 활용하여 로그를 적절히 관리할 수 있습니다.

3. 로그 수준 관리

로깅의 수준을 관리하여 필요한 로그만을 기록하도록 설정하는 것이 중요합니다. FastAPI에서는 로깅 수준을 조절하여 세밀한 로그 관리가 가능합니다.

# DEBUG 레벨 로그는 파일에만 출력
debug_file_handler = RotatingFileHandler('debug.log', maxBytes=10000, backupCount=1)
debug_file_handler.setLevel(logging.DEBUG)
debug_file_handler.setFormatter(formatter)

logger.addHandler(debug_file_handler)

위 코드는 DEBUG 레벨의 로그를 파일에만 출력하는 예제입니다. 이를 통해 개발 중에만 필요한 디버그 로그를 파일로 기록하고, 운영 환경에서는 해당 로그를 출력하지 않도록 설정할 수 있습니다.

이상으로 FastAPI 서버에서 로그를 관리하는 방법에 대해 알아보았습니다. 로그는 애플리케이션의 안정성과 성능을 보장하는 데 중요한 역할을 합니다. 적절한 로그 시스템을 구축하여 서버를 안정적으로 운영할 수 있도록 노력해야 합니다.

참고 자료