1 回答
TA贡献1802条经验 获得超4个赞
目前我明白了我原本想得到的答案,就是获取gin.context中的traceID、SpanID等数据
import (
"fmt"
"github.com/gin-gonic/gin"
oteltrace "go.opentelemetry.io/otel/trace"
)
func GetIDMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
if oteltrace.SpanFromContext(c.Request.Context()).SpanContext().IsValid() {
TraceID := oteltrace.SpanFromContext(c.Request.Context()).SpanContext().TraceID().String()
SpanID := oteltrace.SpanFromContext(c.Request.Context()).SpanContext().SpanID().String()
fmt.Println(TraceID)
fmt.Println(SpanID)
}
}
}
我最初的想法是通过otelgin在context中传递trace信息,然后在gin的中间件中通过context抓取traceID等用于zap logging,但是当时不知道怎么获取TraceID等信息,当我看到gin-contrib/zap库找到了正确的方法。
- 1 回答
- 0 关注
- 169 浏览
添加回答
举报