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..f92aae11b 100644 --- a/medcat-service/medcat_service/main.py +++ b/medcat-service/medcat_service/main.py @@ -1,14 +1,20 @@ +import logging +import logging.config + 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 +46,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