前言

  • 技术栈
Python  3.11.8
fastapi 0.115.12
uvicorn 0.34.2
loguru  0.7.3 
  • uvicorn 默认日志没有时间戳,看起来不方便,主动配置日志格式,使得 uvicorn 打印的日志格式和 loguru 的默认格式一致
uvicorn main:app --host 0.0.0.0 --port 8888 --log-config uvicorn_log_config.json

uvicorn 日志配置文件内容

  • uvicorn_log_config.json
{
    "version": 1,
    "disable_existing_loggers": false,
    "formatters": {
        "default": {
            "()": "uvicorn.logging.DefaultFormatter",
            "fmt": "%(asctime)s.%(msecs)03d | %(levelname)s     | %(message)s",
            "datefmt": "%Y-%m-%d %H:%M:%S"
        },
        "w3c": {
            "()": "uvicorn.logging.AccessFormatter",
            "fmt": "%(asctime)s.%(msecs)03d | %(levelname)s     | %(client_addr)s - %(request_line)s - %(status_code)s",
            "datefmt": "%Y-%m-%d %H:%M:%S"
        }
    },
    "handlers": {
        "default": {
            "formatter": "default",
            "class": "logging.StreamHandler",
            "stream": "ext://sys.stderr"
        },
        "w3c": {
            "formatter": "w3c",
            "class": "logging.StreamHandler",
            "stream": "ext://sys.stdout"
        }
    },
    "loggers": {
        "uvicorn": {"handlers": ["default"], "level": "INFO"},
        "uvicorn.error": {"level": "INFO"},
        "uvicorn.access": {"handlers": ["w3c"], "level": "INFO", "propagate": false}
    }
}

参考文献

本文出自 qbit snap

qbit
271 声望279 粉丝