具有映射诊断上下文的Golang日志记录

具有映射诊断上下文的Golang日志记录,第1张

具有映射诊断上下文的Golang日志记录

Java MDC依赖于线程本地存储,而Go则没有。

最接近的事情是通过堆栈线程上下文。

这就是越来越多的Go语言库正在做的事情。

一种比较典型的方法是通过中间件软件包来执行此 *** 作,该中间件软件包将请求ID添加到Web请求的上下文中,例如:

req = req.WithContext(context.WithValue(req.Context(),"requestId",ID))

然后,假设您传递了上下文,则将其拉出

ctx.Value("requestId")
并在有意义的地方使用它。

可能使您自己的自定义记录器功能如下:

func logStuff(ctx context.Context, msg string) {    log.Println(ctx.Value("requestId"),msg) // call stdlib logger}

您可能想用多种方法来处理此问题,但这是一种相当简单的形式。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5102863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存