2025-10-15 20:53:52 +02:00

69 lines
2.9 KiB
Python

import os
from logging.config import dictConfig
def get_logging_config(nbe_log_level: str, sqla_log_level: str):
return {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": "[%(asctime)s] [%(levelname)s] [%(name)s] (%(module)s:%(lineno)d): %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
"uvicorn": {
"format": "[%(asctime)s] [%(levelname)s] [uvicorn] %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
"uvicorn_access": {
"format": '%(client_addr)s - "%(request_line)s" %(status_code)s',
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "standard",
},
"uvicorn": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "uvicorn",
},
"uvicorn_access": {
"class": "logging.StreamHandler",
"level": "WARNING",
"formatter": "uvicorn_access",
},
},
"root": {
"handlers": ["console"],
"level": nbe_log_level,
},
"loggers": {
# ---- SQLAlchemy / SQLModel ----
"sqlalchemy": {"level": sqla_log_level, "handlers": [], "propagate": False},
"sqlalchemy.engine": {"level": sqla_log_level, "handlers": [], "propagate": False},
"sqlalchemy.pool": {"level": sqla_log_level, "handlers": [], "propagate": False},
"sqlalchemy.orm": {"level": sqla_log_level, "handlers": [], "propagate": False},
"sqlalchemy.dialects": {"level": sqla_log_level, "handlers": [], "propagate": False},
# ---- Httpx / HttpCore / Urllib3 ----
"httpx": {"level": "WARNING", "handlers": ["console"], "propagate": False},
"httpcore": {"level": "WARNING", "handlers": ["console"], "propagate": False},
"urllib3": {"level": "WARNING", "handlers": ["console"], "propagate": False},
# ---- Uvicorn / FastAPI ----
"uvicorn": {"level": "INFO", "handlers": ["uvicorn"], "propagate": False},
# "uvicorn.error": {"level": "INFO", "handlers": ["uvicorn"], "propagate": False},
"uvicorn.access": {"level": "WARNING", "handlers": ["uvicorn_access"], "propagate": False},
# ---- Application ----
"src": {"level": nbe_log_level, "handlers": ["console"], "propagate": False},
},
}
def setup_logging():
nbe_log_level = os.getenv("NBE_LOG_LEVEL", "INFO").upper()
sqla_log_level = os.getenv("SQLALCHEMY_LOG_LEVEL", "ERROR").upper()
logging_config = get_logging_config(nbe_log_level, sqla_log_level)
dictConfig(logging_config)