Как логировать сырые HTTP-запросы и ответы в FastAPI?

Вопрос проверяет умение логировать запросы и ответы для мониторинга и отладки.

Короткий ответ

Для логирования HTTP-запросов и ответов в FastAPI можно использовать пользовательский middleware, который перехватывает данные запроса и ответа.

Длинный ответ

Логирование в FastAPI полезно для мониторинга производительности и отладки. Для реализации логирования запросов и ответов используется middleware. В middleware можно перехватить запрос, записать его данные в лог, а затем сделать то же самое с ответом.

 

Пример реализации:

from fastapi import FastAPI, Request
import logging

app = FastAPI()

logging.basicConfig(level=logging.INFO)

@app.middleware("http")
async def log_requests(request: Request, call_next):
    logging.info(f"Request: {request.method} {request.url}")
    response = await call_next(request)
    logging.info(f"Response: {response.status_code}")
    return response

 

Рекомендации:

- Используйте специализированные библиотеки, такие как starlette-context, для сохранения и логирования контекста запросов.

- Убедитесь, что в логах не содержатся чувствительные данные, чтобы соответствовать стандартам безопасности.

 

Когда использовать:

- Для мониторинга API, анализа производительности или выявления ошибок.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • FastAPI

Ключевые слова

Подпишись на Python Developer в телеграм