在 Flask 中记录每条路由的相关 ID
Posted
技术标签:
【中文标题】在 Flask 中记录每条路由的相关 ID【英文标题】:Logging correlation id per route in Flask 【发布时间】:2021-07-16 18:48:26 【问题描述】:我是 flask 的新手,想从请求中读取自定义关联 ID 并将其记录下来以跟踪每个路由的功能。
我在express 中使用了类似功能的库,并通过HandlerInterceptor
在Java 中使用了实现,并在MDC 中设置了提取的标头值
我看到了一些与烧瓶相关的 python 库,但它们的实现方式是读取预定义的标头名称,而不是允许自定义标头名称并在整个请求生命周期中记录它
关于读取和记录请求标头值以及使用 Flask 应用程序在响应中设置一些唯一 ID 的任何建议
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于在 Flask 中记录每条路由的相关 ID的主要内容,如果未能解决你的问题,请参考以下文章