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 關注
- 201 瀏覽
添加回答
舉報