FastAPI使用loguru时,出现重复日志打印的解决方案

文章讨论了Uvicorn中的日志重复打印现象,源于不同logger的propagate设置。通过分析LOGGING_CONFIG,发现uvicorn.accesslogger的propagate设为False导致日志重发。解决方法是将propagate设置为false以避免日志传播。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先看图,发现每个日志都被打印了3条。其实这个和uvicorn日志打印的设计有关,在uvicorn中有多个logger,分别是uvicorn、uvicorn.error、uvicorn.access

而LOGGING默认有一个属性propagate,这个属性为True时,子日志记录器会重发到父纪录器上。

其实大家可以做个实验,我们发送请求,请求的日志是通过uvicorn.access这个logger打印的,但它却并不会出现打印三次的情况。因此我们可以从日志的配置角度去观察。

我们看下LOGGING_CONFIG:

    "loggers": {
        "uvicorn": {"handlers": ["default"], "level": "INFO"},
        "uvicorn.error": {"level": "INFO"},
        "uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
    }
可以看到,uvicorn.access的propagate是false,其他都为true,所以会出现日志传播,而正如上面所说,propagate可以控制日志传播。

我们先将propagate设置为false看下:

其实问题已经解决,确实是这个参数的问题。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值