Drop log middleware

This commit is contained in:
Georges-Antoine Assi
2025-10-03 11:13:16 -04:00
parent 1f893abc3d
commit 9311d0d95f
3 changed files with 36 additions and 72 deletions

View File

@@ -16,6 +16,39 @@ LIGHTMAGENTA = Fore.LIGHTMAGENTA_EX
RESET = Fore.RESET
RESET_ALL = Style.RESET_ALL
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"romm": {
"()": "logger.formatter.Formatter",
}
},
"handlers": {
"default": {
"formatter": "romm",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
}
},
"root": {
"handlers": ["default"],
"level": "INFO",
},
"loggers": {
"uvicorn": {
"level": "INFO",
"handlers": ["default"],
"propagate": False,
},
"uvicorn.error": {
"level": "INFO",
"handlers": ["default"],
"propagate": False,
},
},
}
def should_strip_ansi() -> bool:
"""Determine if ANSI escape codes should be stripped."""

View File

@@ -1,68 +0,0 @@
import logging
import time
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from user_agents import parse as parse_user_agent
log = logging.getLogger("uvicorn.access")
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"romm": {
"()": "logger.formatter.Formatter",
}
},
"handlers": {
"default": {
"formatter": "romm",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
}
},
"root": {
"handlers": ["default"],
"level": "INFO",
},
"loggers": {
"uvicorn": {
"level": "INFO",
"handlers": ["default"],
"propagate": False,
},
"uvicorn.error": {
"level": "INFO",
"handlers": ["default"],
"propagate": False,
},
},
}
class CustomLoggingMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
client_addr = request.client.host if request.client else "-"
method = request.method
path = request.url.path
status_code = response.status_code
length = response.headers.get("content-length", "-")
ua_string = request.headers.get("user-agent", "-")
ua = parse_user_agent(ua_string)
browser = ua.browser.family
os = ua.os.family
log_msg = (
f"{client_addr} | "
f"{method} {path} {status_code} | {length} | "
f"{browser} {os} | {process_time:.3f}"
)
log.info(log_msg)
return response

View File

@@ -44,7 +44,7 @@ from handler.auth.constants import ALGORITHM
from handler.auth.hybrid_auth import HybridAuthBackend
from handler.auth.middleware import CustomCSRFMiddleware, SessionMiddleware
from handler.socket_handler import socket_handler
from logger.log_middleware import LOGGING_CONFIG, CustomLoggingMiddleware
from logger.formatter import LOGGING_CONFIG
from utils import get_version
from utils.context import (
ctx_aiohttp_session,
@@ -135,8 +135,8 @@ app.mount("/ws", socket_handler.socket_app)
add_pagination(app)
# NOTE: This code is only executed when running the application directly, not by Production
# deployments using Gunicorn.
# NOTE: This code is only executed when running the application directly,
# not by deployments using gunicorn.
if __name__ == "__main__":
# Run migrations
alembic.config.main(argv=["upgrade", "head"])
@@ -145,5 +145,4 @@ if __name__ == "__main__":
asyncio.run(main())
# Run application
app.add_middleware(CustomLoggingMiddleware)
uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=True, access_log=False)