第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何獲取有關(guān) *gin.Context.Request.Context() 的詳細(xì)信息

如何獲取有關(guān) *gin.Context.Request.Context() 的詳細(xì)信息

Go
DIEA 2023-03-15 14:32:34
我正在嘗試使用otelgin來(lái)跟蹤我的項(xiàng)目,它是這樣說(shuō)的where required. It is available from gin.Context.Request.Context(),那么我如何從 gin.context 中獲取詳細(xì)信息以查看它是否有效。正式地,他們?cè)诔跏蓟櫰魈峁┏绦驎r(shí)添加一個(gè)標(biāo)準(zhǔn)輸出作為導(dǎo)出器:func initTracer() (*sdktrace.TracerProvider, error) {    // stdout as exporter    exporter, err := stdout.New(stdout.WithPrettyPrint())    if err != nil {        return nil, err    }    tp := sdktrace.NewTracerProvider(        sdktrace.WithSampler(sdktrace.AlwaysSample()),        sdktrace.WithBatcher(exporter),    )    otel.SetTracerProvider(tp) otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))    return tp, nil}這是命令行輸出的一部分:"Name": "/users/:id",    "SpanContext": {        "TraceID": "e7a43d30c0e507b4c59fd65dc3bc6d77",        "SpanID": "636c22201c903573",        "TraceFlags": "01",        "TraceState": "",        "Remote": false    },    "Parent": {        "TraceID": "00000000000000000000000000000000",        "SpanID": "0000000000000000",        "TraceFlags": "00",        "TraceState": "",        "Remote": false    },    "SpanKind": 2,    "StartTime": "2022-11-12T16:02:07.871843+08:00",    "EndTime": "2022-11-12T16:02:07.871843+08:00",但是有什么辦法可以得到這個(gè)表單 gin.Context 嗎?或者我可以從 gin.Context 獲取出口商的詳細(xì)信息嗎?我試圖添加一個(gè)中間件來(lái)捕獲它們:func TracerGetMiddleware(c *gin.Context) {    //var tracer oteltrace.Tracer    //tracerInterface, ok := c.Get("otel-go-contrib-tracer")    //if ok {    /// tracer, ok = tracerInterface.(oteltrace.Tracer)    //}    //tracer.Start(c, "test")    fmt.Println(c.Request.Context())}但這是 c.Request.Context() 的輸出(type *http.contextKey, val <not Stringer>).WithValue(type *http.contextKey, val [::1]:8088).WithCancel.WithCancel.WithValue(type trace.traceContextKeyType, val <not Stringer>)
查看完整描述

1 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

目前我明白了我原本想得到的答案,就是獲取gin.context中的traceID、SpanID等數(shù)據(jù)


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)

        }

    }

}

我最初的想法是通過(guò)otelgin在context中傳遞trace信息,然后在gin的中間件中通過(guò)context抓取traceID等用于zap logging,但是當(dāng)時(shí)不知道怎么獲取TraceID等信息,當(dāng)我看到gin-contrib/zap庫(kù)找到了正確的方法。


查看完整回答
反對(duì) 回復(fù) 2023-03-15
  • 1 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)