gpt4 book ai didi

logging - FastAPI uvicorn 不记录错误

转载 作者:行者123 更新时间:2023-12-04 11:47:13 26 4
gpt4 key购买 nike

我正在学习 fastapi,我正在本地主机上启动一个 uvicorn 服务器。每当出现错误/异常时,我都没有得到回溯。
我得到的只是:INFO: 127.0.0.1:56914 - "POST /create/user/ HTTP/1.1" 500 Internal Server Error所以,很难调试,我正在尝试python的日志模块

 import logging
log = logging.getLogger("uvicorn")
log.setLevel(logging.DEBUG)
我也试过用调试参数启动 uvicorn
if __name__ == "__main__":
dev = 1
print("printing")
if dev == 1:
uvicorn.run('main:app', host="127.0.0.1", port=5000, log_level="info", reload=True, debug=True)
if dev == 2:
uvicorn.run('main:app', host="127.0.0.1", port=5000, log_level="info", workers=2)


still the same problem persists. I am in development phase and I need to error traceback,please guide.

最佳答案

解决方案/修复
现在,当您通过 Python 中的命令 uvicorn.run(app) 执行 uvicorn 时,这是你的下一步行动:
获取 ucivorn 默认日志配置并将处理程序从您的应用程序添加到它:


config = {}

# this is default (site-packages\uvicorn\main.py)
config['log_config'] = {
'version': 1, 'disable_existing_loggers': True,
'formatters': {'default': {'()': 'uvicorn.logging.DefaultFormatter', 'fmt': '%(levelprefix)s %(message)s', 'use_colors': None},
'access': {'()': 'uvicorn.logging.AccessFormatter', 'fmt': '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s'}},
'handlers': {'default': {'formatter': 'default', 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stderr'},
'access': {'formatter': 'access', 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stdout'}},
'loggers': {'uvicorn': {'handlers': ['default'], 'level': 'INFO'},
'uvicorn.error': {'level': 'INFO', 'handlers': ['default'], 'propagate': True},
'uvicorn.access': {'handlers': ['access'], 'level': 'INFO', 'propagate': False},
},
}

# add your handler to it (in my case, I'm working with quart, but you can do this with Flask etc. as well, they're all the same)
config['log_config']['loggers']['quart'] = {'handlers': ['default'], 'level': 'INFO'}
这将使记录器远离夸脱/ flask /等。 uvicorn 启动时启用。或者,您可以设置 disable_existing_loggers为假。但这将使所有记录器保持启用状态,然后您可能会收到比您希望更多的消息。
最后,将配置传递给 uvicorn:
uvicorn.run(app, **config)
解释
当 uvicorn 的日志配置设置了 disable_existing_loggers为 True,所有其他记录器将被禁用。这也意味着记录器夸脱和 Flask 使用(打印回溯)被禁用。您可以将配置设置为不禁用其他记录器,或者将它们重新添加到配置中,这样 uvicorn 就不会首先禁用它们。

关于logging - FastAPI uvicorn 不记录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66602480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com