我有一個(gè) ctx (context.Context) 變量,它的值為:ctx = context.Background.WithCancel.WithCancel.WithValue(peer.peerKey{}, &peer.Peer{Addr:(*net.UnixAddr)(0xc000270820), AuthInfo:credentials.AuthInfo(nil)}).WithValue(metadata.mdIncomingKey{}, metadata.MD{":authority":[]string{"unix:///run/containerd/containerd.sock"}, "content-type":[]string{"application/grpc"}, "user-agent":[]string{"grpc-go/1.12.0"}, "containerd-lease":[]string{"615343279-BvIN"}, "containerd-namespace":[]string{"default"}}).WithValue(grpc.streamKey{}, <stream: 0xc00026af00, /containerd.services.content.v1.Content/Write>).WithValue(log.loggerKey{}, &logrus.Entry{Logger:(*logrus.Logger)(0xc0000b0180), Data:logrus.Fields{"ref":"config-sha256:bc8fb6e6e49dac415b320f3ce41fa4f6335a4526fccd4e97c64bcbdfca280ba5", "total":1512, "expected":"sha256:bc8fb6e6e49dac415b320f3ce41fa4f6335a4526fccd4e97c64bcbdfca280ba5"}, Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, Level:0x0, Caller:(*runtime.Frame)(nil), Message:"", Buffer:(*bytes.Buffer)(nil), err:""})正如您在此處看到的,有一個(gè)數(shù)據(jù)字段,其中包含一些其他值。我想提取數(shù)據(jù)字段中的ref值和expected值。我試著把它們放在外地Value(),但我總是沒有。知道如何獲得這些價(jià)值嗎?據(jù)我了解loggerKey{}是這里的關(guān)鍵,所以我也嘗試將數(shù)據(jù)取出loggerKey{},但它仍然說接口是空的。logger := ctx.Value(loggerKey{}).(*logrus.Entry)打印記錄器拋出錯(cuò)誤:panic: interface conversion: interface {} is nil, not *logrus.Entry不確定,為什么接口在這里為零。TIA。
1 回答

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
弄清楚了。我使用 loggerKey{} 作為鍵,而實(shí)際鍵是 log.loggerKey{}。我必須導(dǎo)入日志,然后它才起作用。
- 1 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報(bào)
0/150
提交
取消