import logging import os from typing import Dict from pydantic import BaseModel LOG_LEVEL = os.getenv('LOG_LEVEL') or 'INFO' class LogConfig(BaseModel): """Logging configuration to be set for the server""" LOG_FORMAT: str = "%(levelprefix)s | %(asctime)s | %(message)s" LOG_LEVEL: str = LOG_LEVEL # Logging config version: int = 1 disable_existing_loggers: bool = False formatters: Dict = { "default": { "()": "uvicorn.logging.DefaultFormatter", "fmt": LOG_FORMAT, "datefmt": "%Y-%m-%d %H:%M:%S", }, } handlers: Dict = { "default": { "formatter": "default", "class": "logging.StreamHandler", "stream": "ext://sys.stderr", }, } loggers: Dict = { '': {"handlers": ["default"], "level": LOG_LEVEL, 'propagate': False}, 'uvicorn': {"handlers": ["default"], "level": LOG_LEVEL, 'propagate': False} } class EndpointFilter(logging.Filter): def filter(self, record: logging.LogRecord) -> bool: return record.getMessage().find("/health") == -1