import logging from uvicorn.logging import ColourizedFormatter from uvicorn.config import LOGGING_CONFIG LOGFMT = "%(asctime)s %(levelprefix)s [%(name)s] %(message)s" def logcfg(level=logging.INFO, fmt=LOGFMT, **kwargs): formatter = ColourizedFormatter(fmt=fmt, **kwargs) handler = logging.StreamHandler() handler.setFormatter(formatter) logging.basicConfig(level=level, handlers=[handler]) # add timestamps to uvicorn logs formatters = LOGGING_CONFIG["formatters"] for formatter in formatters.values(): if "fmt" not in formatter: continue fmt = formatter["fmt"] if "%(asctime)s" in fmt: continue formatter["fmt"] = "%(asctime)s " + fmt