如何配置Uvicorn/FastAPI无彩色JSON日志并移除color_message字段?
解决Uvicorn/FastAPI JSON日志中color_message字段的问题
方案1:在日志配置文件中直接禁用颜色输出
由于指定日志配置文件时--no-use-colors参数不生效,可直接在配置里给Uvicorn相关的日志处理器添加use_colors=False参数,从源头阻止颜色消息生成:
{ "handlers": { "uvicorn": { "class": "logging.StreamHandler", "formatter": "json", "stream": "ext://sys.stdout", "use_colors": false } }, "formatters": { "json": { "class": "pythonjsonlogger.jsonlogger.JsonFormatter" } }, "loggers": { "uvicorn": { "handlers": ["uvicorn"], "level": "INFO" } } }
方案2:用pythonjsonlogger的字段过滤排除color_message
无需继承重写格式化器,直接在JsonFormatter配置里指定要输出的字段列表,忽略color_message:
{ "formatters": { "json": { "class": "pythonjsonlogger.jsonlogger.JsonFormatter", "format": "%(levelname)s %(message)s %(asctime)s %(name)s %(module)s" } } }
格式化器只会输出你指定的字段,color_message会被自动排除。
方案3:代码启动Uvicorn时直接禁用颜色
如果通过代码而非命令行启动Uvicorn,可直接在启动参数中设置use_colors=False:
import uvicorn from fastapi import FastAPI app = FastAPI() if __name__ == "__main__": uvicorn.run( app, host="0.0.0.0", port=8000, use_colors=False, log_config="logging.json" )
内容的提问来源于stack exchange,提问作者Armand Sauzay
相关产品推荐
相关产品推荐

