Spaces:
Sleeping
Sleeping
Download app/api/middleware/logging.py from iharshyadav/SmartCertify-ML: direct link, hf CLI and curl.
- Browser
- Download file 1.41 kB
-
https://huggingface.co/spaces/iharshyadav/SmartCertify-ML/resolve/main/app/api/middleware/logging.py
- Command line
-
hf download hf://spaces/iharshyadav/SmartCertify-ML/app/api/middleware/logging.py
-
curl -L -o logging.py https://huggingface.co/spaces/iharshyadav/SmartCertify-ML/resolve/main/app/api/middleware/logging.py
1.41 kB
| """ | |
| SmartCertify ML β Request/Response Logging Middleware | |
| """ | |
| import time | |
| import logging | |
| from fastapi import Request, Response | |
| from starlette.middleware.base import BaseHTTPMiddleware | |
| logger = logging.getLogger("smartcertify.api") | |
| class RequestLoggingMiddleware(BaseHTTPMiddleware): | |
| """Middleware to log all API requests and responses.""" | |
| async def dispatch(self, request: Request, call_next): | |
| start_time = time.time() | |
| # Log request | |
| logger.info( | |
| f"β {request.method} {request.url.path} " | |
| f"[{request.client.host if request.client else 'unknown'}]" | |
| ) | |
| # Process request | |
| try: | |
| response = await call_next(request) | |
| except Exception as e: | |
| duration_ms = (time.time() - start_time) * 1000 | |
| logger.error( | |
| f"β {request.method} {request.url.path} β " | |
| f"ERROR: {str(e)} [{duration_ms:.1f}ms]" | |
| ) | |
| raise | |
| duration_ms = (time.time() - start_time) * 1000 | |
| # Log response | |
| log_fn = logger.warning if response.status_code >= 400 else logger.info | |
| log_fn( | |
| f"β {request.method} {request.url.path} β " | |
| f"{response.status_code} [{duration_ms:.1f}ms]" | |
| ) | |
| # Add timing header | |
| response.headers["X-Process-Time-Ms"] = f"{duration_ms:.1f}" | |
| return response | |