前言
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 日誌配置文件內容
{
"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": "ERROR"},
"uvicorn.access": {"handlers": ["w3c"], "level": "INFO", "propagate": false}
}
}
參考文獻
uvicorn 配置文件官方文檔: https://www.uvicorn.org/settings/#logging
本文出自 qbit snap