From 5e829fc7e7b2385d98721201f7c536449460b52b Mon Sep 17 00:00:00 2001 From: Chris Coutinho Date: Sat, 18 Oct 2025 01:15:06 +0200 Subject: [PATCH] refactor: Unify logging & remove factory deployment --- nextcloud_mcp_server/app.py | 27 ++++----------------------- nextcloud_mcp_server/config.py | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/nextcloud_mcp_server/app.py b/nextcloud_mcp_server/app.py index c305cce..00481f4 100644 --- a/nextcloud_mcp_server/app.py +++ b/nextcloud_mcp_server/app.py @@ -14,7 +14,7 @@ from starlette.routing import Mount from nextcloud_mcp_server.auth import NextcloudTokenVerifier, load_or_register_client from nextcloud_mcp_server.client import NextcloudClient -from nextcloud_mcp_server.config import setup_logging +from nextcloud_mcp_server.config import setup_logging, LOGGING_CONFIG from nextcloud_mcp_server.context import get_client as get_nextcloud_client from nextcloud_mcp_server.server import ( configure_calendar_tools, @@ -352,9 +352,7 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None): # Asynchronously get the OAuth configuration import asyncio - nextcloud_host, token_verifier, auth_settings = asyncio.run( - setup_oauth_config() - ) + _, token_verifier, auth_settings = asyncio.run(setup_oauth_config()) mcp = FastMCP( "Nextcloud MCP", lifespan=app_lifespan_oauth, @@ -422,10 +420,6 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None): @click.option( "--port", "-p", type=int, default=8000, show_default=True, help="Server port" ) -@click.option( - "--workers", "-w", type=int, default=None, help="Number of worker processes" -) -@click.option("--reload", "-r", is_flag=True, help="Enable auto-reload") @click.option( "--log-level", "-l", @@ -483,8 +477,6 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None): def run( host: str, port: int, - workers: int, - reload: bool, log_level: str, transport: str, enable_app: tuple[str, ...], @@ -591,21 +583,10 @@ def run( enabled_apps = list(enable_app) if enable_app else None - if reload or workers: - app = "nextcloud_mcp_server.app:get_app" - factory = True - else: - app = get_app(transport=transport, enabled_apps=enabled_apps) - factory = False + app = get_app(transport=transport, enabled_apps=enabled_apps) uvicorn.run( - app=app, - factory=factory, - host=host, - port=port, - reload=reload, - workers=workers, - log_level=log_level, + app=app, host=host, port=port, log_level=log_level, log_config=LOGGING_CONFIG ) diff --git a/nextcloud_mcp_server/config.py b/nextcloud_mcp_server/config.py index c37ce94..5e31cef 100644 --- a/nextcloud_mcp_server/config.py +++ b/nextcloud_mcp_server/config.py @@ -2,17 +2,18 @@ import logging.config LOGGING_CONFIG = { "version": 1, + "disable_existing_loggers": False, "handlers": { "default": { "class": "logging.StreamHandler", "formatter": "http", - } + }, }, "formatters": { "http": { "format": "%(levelname)s [%(asctime)s] %(name)s - %(message)s", "datefmt": "%Y-%m-%d %H:%M:%S", - } + }, }, "loggers": { "": { @@ -29,6 +30,21 @@ LOGGING_CONFIG = { "level": "INFO", "propagate": False, # Prevent propagation to root logger }, + "uvicorn": { + "handlers": ["default"], + "level": "INFO", + "propagate": False, + }, + "uvicorn.access": { + "handlers": ["default"], + "level": "INFO", + "propagate": False, + }, + "uvicorn.error": { + "handlers": ["default"], + "level": "INFO", + "propagate": False, + }, }, }