from fastapi import FastAPI, Request, HTTPException, Depends, status, Response from fastapi.responses import JSONResponse from datetime import datetime from Craft.enums import LoggingLevel from Craft.module.logging import Logger def init_logging_middleware(app: FastAPI): @app.middleware("http") async def logging_middleware(request: Request, call_next): try: logger = Logger() request_body = await request.body() request = Request( scope=request.scope, receive=lambda: {"type": "http.request", "body": request_body}, ) response = await call_next(request) #oneline_body = request_body.decode("utf-8").replace("\n", "") logger.info( f"Request: {request.method} {request.url.path} {request.client.host} {request.client.port}" ) return response except Exception as e: print(e) return JSONResponse( status_code=500, content={"message": "Internal Server Error"} ) return app