[python] FastAPI에서 API 로깅 구현하기

FastAPI는 Python으로 작성된 빠르고 현대적인 웹 프레임워크입니다. FastAPI를 사용하면 간단하고 효율적인 API를 빌드할 수 있습니다. 그러나 API 로깅은 매우 중요한 부분이며, 개발자에게 API의 동작을 추적하고 디버깅할 수 있는 기능을 제공합니다.

FastAPI에서 API 로깅을 구현하는 방법을 살펴보겠습니다.

1. Python logging 모듈

Python의 기본 logging 모듈은 로그 기능을 제공합니다. FastAPI에서 API 로깅을 구현하기 위해서는 먼저 logging 모듈을 사용해야 합니다.

import logging

2. 로깅 설정하기

logging 모듈을 사용하여 로깅을 구성할 수 있습니다. 로그를 어디에 기록할 것인지, 어떤 형식으로 기록할 것인지 등을 설정할 수 있습니다.

logging.basicConfig(filename='api.log', level=logging.INFO, format='%(asctime)s %(levelname)s:%(message)s')

위의 예제에서는 api.log 파일에 로그를 기록하며, 로깅 레벨은 INFO로 설정되어 있습니다. 포맷은 시간, 로깅 레벨, 메시지를 포함합니다.

3. FastAPI에서 로깅 사용하기

FastAPI에서 로깅을 사용하기 위해 FastAPI 클래스의 add_middleware() 메서드를 사용해 미들웨어를 추가해야 합니다.

from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    app.add_middleware(WSGIMiddleware, logging=True)

위의 예제에서는 startup_event 함수를 사용하여 FastAPI 애플리케이션이 시작될 때 미들웨어를 추가합니다. WSGIMiddleware 클래스에 logging=True를 전달하여 로깅을 활성화합니다.

4. 로깅 메시지 사용하기

FastAPI의 경로 핸들러에서 로깅 메시지를 사용할 수 있습니다. 로깅 메시지를 작성하여 필요한 정보를 로그로 기록할 수 있습니다.

from fastapi import FastAPI, logger

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
    logger.info(f"Read item {item_id}, q: {q}")
    return {"item_id": item_id, "q": q}

위의 예제에서는 logger 객체를 사용하여 로그 메시지를 작성하고, info() 메서드로 기록합니다.

5. 로그 확인하기

API가 실행되고 로그가 생성되었는지 확인하기 위해 api.log 파일을 열어내용을 확인할 수 있습니다.

결론

FastAPI에서 API 로깅을 구현하는 방법을 살펴보았습니다. 로깅을 통해 API의 동작을 추적하고 디버깅할 수 있으며, 문제를 해결하기 위한 중요한 도구입니다. FastAPI와 logging 모듈을 함께 사용하여 효율적인 API 개발을 위해 로깅을 활용해보세요.


참고 자료: