Sci*_*nus 10 python logging fastapi uvicorn
我的记录器看起来像这样:
log_config = {
"version": 1,
"disable_existing_loggers": True,
"formatters": {
"default": {
"()": "uvicorn.logging.DefaultFormatter",
"fmt": "%(asctime)s::%(levelname)s::%(name)s::%(filename)s::%(funcName)s::%(message)s",
"datefmt": "%Y-%m-%dT%H:%M:%S%z",
"use_colors": False,
},
"access": {
"()": "uvicorn.logging.AccessFormatter",
"datefmt": "%Y-%m-%dT%H:%M:%S%z",
"fmt": '%(asctime)s::%(levelprefix)s %(client_addr)s - "%(request_line)s" %(msecs)d %(status_code)s',
"use_colors": False,
},
},
"handlers":
{
"default":
{
"formatter": "default",
"class": 'logging.FileHandler',
"filename": CONFIG[SECTION]["default"]
},
"access":
{
"formatter": "access",
"class": 'logging.FileHandler',
"filename": CONFIG[SECTION]["access"]
},
},
"loggers":
{
"uvicorn": {"handlers": ["default"], "level": "INFO", "propagate": False},
"uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
}
}
Run Code Online (Sandbox Code Playgroud)
启动配置:
uvicorn.run(
app="app.main:app",
host="0.0.0.0",
port=8000,
reload=True,
log_config=log_config,
proxy_headers=True,
forwarded_allow_ips='*',
log_level="info"
)
Run Code Online (Sandbox Code Playgroud)
我没有找到在访问格式中添加响应时间的方法。我似乎也无法在任何地方找到默认的参数列表。我该如何处理这个问题?
我还必须为 FastAPI 创建一些自定义日志,最终我使用中间件来获得我想要的结果。
您可以在此处找到有关如何执行此操作的完整教程。
基本上,您不需要将记录器包含在 FastAPI 类中,而是将其作为中间件包含在内。
代替:
uvicorn.run(
app="app.main:app",
host="0.0.0.0",
port=8000,
reload=True,
log_config=log_config,
proxy_headers=True,
forwarded_allow_ips='*',
log_level="info"
)
Run Code Online (Sandbox Code Playgroud)
使用这样的方法:
app.add_middleware(
RouterLoggingMiddleware,
logger=logging.getLogger(__name__)
)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2347 次 |
| 最近记录: |