【问题标题】:Logging correlation id per route in Flask在 Flask 中记录每条路由的相关 ID
【发布时间】:2021-07-16 18:48:26
【问题描述】:
我是 flask 的新手,想从请求中读取自定义关联 ID 并将其记录下来以跟踪每个路由的功能。
我在express 中使用了类似功能的库,并通过HandlerInterceptor 在Java 中使用了实现,并在MDC 中设置了提取的标头值
我看到了一些与烧瓶相关的 python 库,但它们的实现方式是读取预定义的标头名称,而不是允许自定义标头名称并在整个请求生命周期中记录它
关于读取和记录请求标头值以及使用 Flask 应用程序在响应中设置一些唯一 ID 的任何建议
【问题讨论】:
标签:
python
flask
logging
microservices
【解决方案1】:
终于找到答案here。我们可以使用flask.g 和logging.config 和过滤器的概念,因为我已经通过通用的 logging.config 和模式配置了整个应用程序。此外,我什至需要通过自定义请求标头读取关联 ID,比如说 Correlation-ID,或者如果没有找到创建唯一 ID,那么围绕这方面也进行了一些更改。
【解决方案2】:
试图回答这个问题
在请求之前注册您的记录器
@app.before_request
def init_req():
g.logger = create_logger("req-"+str(uuid.uuid4()))
使用g.logger 编写您的记录器
创建logger函数可以这样
def create_logger(name: str):
return logging.getLogger(name)