FastAPI는 Python 기반의 웹 프레임워크로, 빠른 성능과 사용하기 쉬운 API 개발을 제공합니다. 이를 통해 웹 애플리케이션 개발을 더욱 간편하게 할 수 있습니다. 하지만 sometimes you may encounter bugs or errors in your FastAPI application. 이러한 경우, logging과 경고 설정을 통해 이러한 오류를 모니터링하고 대응할 수 있습니다.
Logging 설정하기
FastAPI에서 기본적으로 logging 모듈을 사용하여 로그를 처리합니다. 로깅 설정은 로그 레벨과 로그 출력 방식을 포함합니다. 다음과 같이 logging
모듈을 사용하여 로그 레벨을 설정할 수 있습니다.
import logging
logging.basicConfig(level=logging.INFO)
이 예시에서는 로그 레벨을 INFO
로 설정했습니다. 이는 출력할 로그의 세부 수준을 의미합니다. 다음은 로그 레벨의 일반적인 종류입니다.
- DEBUG: 디버그 목적으로 사용되는 로그 레벨로, 가장 세부한 정보를 출력합니다.
- INFO: 애플리케이션의 상태 정보를 출력합니다.
- WARNING: 경고 메시지를 출력합니다.
- ERROR: 에러가 발생했을 때 출력합니다.
- CRITICAL: 심각한 에러가 발생했을 때 출력합니다.
원하는 로그 수준에 해당하는 로그 레벨을 설정할 수 있습니다. 또한 로그를 파일에 저장하거나 다른 출력 방식을 사용할 수도 있습니다.
경고 설정하기
FastAPI에서는 warnings
모듈을 사용하여 경고 메시지를 처리할 수 있습니다. 경고 메시지는 개발 중인 애플리케이션에서 잠재적인 문제를 나타내는 경우에 사용됩니다. 예를 들어, 비권장된 메서드 또는 모듈을 사용하는 경우 경고를 출력하고 대응할 수 있습니다.
경고 메시지를 출력하기 위해 warnings
모듈의 warn
함수를 사용합니다. 다음은 예시 코드입니다.
import warnings
warnings.warn("이 방법은 비권장입니다.", DeprecationWarning)
경고 메시지를 출력하고자 하는 경우에는 위와 같이 warn
함수를 호출하고, 첫 번째 인자로 출력할 메시지를, 두 번째 인자로는 경고의 종류를 지정합니다.
사용자 정의 로그 및 경고 설정하기
FastAPI에서는 기본 로그 및 경고 설정 이외에도 사용자 정의 설정을 적용할 수 있습니다. 이를 통해 로깅 포맷, 로그 파일 저장, 로그의 레벨에 따른 분류 등을 사용자가 원하는 대로 설정할 수 있습니다.
사용자 정의 로그 설정을 위해서는 logging
모듈의 Logger
객체를 생성하고, 필요한 설정을 수행해야 합니다. 예를 들어, 로그를 파일에 저장하고 싶다면 다음과 같이 설정할 수 있습니다.
import logging
logger = logging.getLogger(__name__)
handler = logging.FileHandler(filename='app.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
이 예시에서는 getLogger
함수를 사용하여 Logger
객체를 생성하고, FileHandler
를 통해 로그를 파일에 저장했습니다. 로그의 포맷을 지정하기 위해 Formatter
를 사용하였습니다.
사용자 정의 경고 설정을 위해서는 warnings
모듈의 filterwarnings
함수를 사용하여 경고 메시지의 출력을 제어할 수 있습니다. 예를 들어, 한 번만 출력되도록 경고 메시지를 설정하려면 다음과 같이 설정할 수 있습니다.
import warnings
warnings.filterwarnings("once")
위 코드는 이미 발생한 경고 메시지는 한 번만 출력하도록 설정합니다. 이렇게 하면 반복해서 같은 경고 메시지가 여러 번 출력되는 것을 방지할 수 있습니다.
결론
FastAPI에서 로그 모니터링 및 경고 설정을 통해 웹 애플리케이션의 오류와 잠재적인 문제를 파악하고 대응할 수 있습니다. 기본 설정 이외에도 사용자 정의 설정을 통해 로그의 포맷, 출력 방식, 경고 메시지의 제어 등을 유연하게 처리할 수 있습니다. 이를 통해 개발한 애플리케이션의 안정성과 신뢰성을 향상시킬 수 있습니다.