From d24e799eba4a8f8d6d3ace5dd3a36c4a31eac245 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Tue, 28 Oct 2025 16:28:57 +0000 Subject: [PATCH 1/2] fix(medcat-service) - Fix access log format not being set using uvicorn worker --- medcat-service/medcat_service/log_config.py | 35 +++++++++++++++++++++ medcat-service/medcat_service/main.py | 6 ++++ medcat-service/start_service_production.sh | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 medcat-service/medcat_service/log_config.py diff --git a/medcat-service/medcat_service/log_config.py b/medcat-service/medcat_service/log_config.py new file mode 100644 index 000000000..493364071 --- /dev/null +++ b/medcat-service/medcat_service/log_config.py @@ -0,0 +1,35 @@ +log_config = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "access": { + "()": "uvicorn.logging.AccessFormatter", + "fmt": '%(asctime)s [ACCESS] - %(client_addr)s - "%(request_line)s" %(status_code)s', + "use_colors": True, + }, + "default": { + "()": "uvicorn.logging.DefaultFormatter", + "fmt": "%(asctime)s [%(levelname)s] %(name)s: %(message)s", + "use_colors": True, + }, + }, + "handlers": { + "access": { + "class": "logging.StreamHandler", + "formatter": "access", + }, + "default": { + "formatter": "default", + "class": "logging.StreamHandler", + }, + }, + "loggers": { + # "root": { + # "handlers": ["default"], + # "level": settings.app_log_level, + # }, + "uvicorn": {"handlers": ["default"], "level": "DEBUG", "propagate": True}, + "uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False}, + "uvicorn.error": {"level": "INFO", "propagate": False}, + }, +} diff --git a/medcat-service/medcat_service/main.py b/medcat-service/medcat_service/main.py index 945d6255b..d8a05dcea 100644 --- a/medcat-service/medcat_service/main.py +++ b/medcat-service/medcat_service/main.py @@ -1,14 +1,19 @@ +import logging + import gradio as gr from fastapi import FastAPI, Request from fastapi.responses import JSONResponse from medcat_service.demo.gradio_demo import io from medcat_service.dependencies import get_settings +from medcat_service.log_config import log_config from medcat_service.routers import admin, health, process from medcat_service.types import HealthCheckFailedException settings = get_settings() +logging.config.dictConfig(log_config) + app = FastAPI( title="MedCAT Service", summary="MedCAT Service", @@ -40,4 +45,5 @@ async def healthcheck_failed_exception_handler(request: Request, exc: HealthChec # Only run this when directly executing `python main.py` for local dev. import os import uvicorn + uvicorn.run("medcat_service.main:app", host="0.0.0.0", port=int(os.environ.get("SERVER_PORT", 8000))) diff --git a/medcat-service/start_service_production.sh b/medcat-service/start_service_production.sh index 5009c521f..f82cc67c9 100644 --- a/medcat-service/start_service_production.sh +++ b/medcat-service/start_service_production.sh @@ -33,7 +33,7 @@ if [ -z ${SERVER_WORKER_TIMEOUT+x} ]; then echo "SERVER_WORKER_TIMEOUT is unset -- setting to default (sec): $SERVER_WORKER_TIMEOUT"; fi - +# Note - SERVER_ACCESS_LOG_FORMAT is unused when worker-class is set to UvicornWorker SERVER_ACCESS_LOG_FORMAT="%(t)s [ACCESS] %(h)s \"%(r)s\" %(s)s \"%(f)s\" \"%(a)s\"" # start the server From 9e59d1ce829eced2e56a87a720f1606f17d42cee Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Tue, 28 Oct 2025 16:41:04 +0000 Subject: [PATCH 2/2] fix(medcat-service) - Fix access log format not being set using uvicorn worker --- medcat-service/medcat_service/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/medcat-service/medcat_service/main.py b/medcat-service/medcat_service/main.py index d8a05dcea..f92aae11b 100644 --- a/medcat-service/medcat_service/main.py +++ b/medcat-service/medcat_service/main.py @@ -1,4 +1,5 @@ import logging +import logging.config import gradio as gr from fastapi import FastAPI, Request