小编Zak*_*Zak的帖子

如何在go微服务的每个日志中添加trace id

我想将跟踪 id 添加到对微服务的每个请求完成的日志记录中。我希望这与 springboot 应用程序类似,我们可以在 MDC 中设置跟踪 id 并获取它并在日志记录时使用它。

\n\n

我做了一些研究,发现 MDC 在 go lang 中相当于上下文。因此,我在我的上下文中设置了跟踪 id。现在的问题是我必须在哪里使用跟踪 id 进行日志记录,我需要将上下文传递给该函数,这是非常丑陋的方式。我正在寻找更好的解决方案来解决这个问题。

\n\n
func HandlerFunction(f gin.HandlerFunc) gin.HandlerFunc{\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return func(cxt *gin.Context) {\n        reqraceId := cxt.Request.Header.Get("trace-id")\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0requid , _ := uuid.NewRandom()\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if reqTraceId == "" {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0c.Request.Header.Set("trace-id", requid.String())\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0f(c)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

logging trace go microservices

6
推荐指数
1
解决办法
9319
查看次数

标签 统计

go ×1

logging ×1

microservices ×1

trace ×1