我最近使用 FastAPI 框架创建了一个 python API,并让它在我的 AWS ECS 服务中运行良好。我已经为 ALB 的健康检查设置了 /health 端点。我的 ECS 容器的入口点是这个命令
ENTRYPOINT ["app/start.sh"]
这就是我在 start.sh 中的内容
uvicorn main:app --host 0.0.0.0
我遇到的问题是,当 ALB 命中 /health 端点时,我的 ECS 日志中充满了 200 个 OK。非常令人沮丧的是,我几乎找不到我的 API 日志,而 Cloudwatch 充满了 /health 端点日志。有没有办法可以避免健康端点日志?
@app.get("/health", response_class=PlainTextResponse)
def healthcheck():
return "200"
The comment on this github issue 提供了一个示例,说明如何在 Python 应用程序中使用 uvicorn 过滤给定端点的日志。
它说明您需要为端点定义一个过滤器,并将其添加到记录器中。作为 MatsLindh mentioned in the comments below ,上述方法过滤掉日志消息中出现的任何
/health
- 这意味着它也会过滤掉端点,例如/foo/health
、/foo/health/bar
等。上面的修改示例过滤掉
/health
端点的访问日志:点击
/test
端点,我们可以看到有一个访问日志和函数的输出。/health
端点没有访问日志,只有函数的输出。