import time from starlette.middleware.base import BaseHTTPMiddleware from loguru import logger class ActivityTrackerMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): start_time = time.time() method = request.method url = str(request.url) response = await call_next(request) process_time = time.time() - start_time logger.info(f"{method} {url} - {process_time:.6f} seconds") return response