2

我正在使用zipkin-go-opentracing,它是 go 中 zipkin 的opentracing API 的实现。

由于(原因)我需要从跨度中获取traceId。所以问题是:给定一个 opentracing.Span,我如何获得 TraceId?我尝试过的一切都给了我某种类型断言错误。

谢谢,

4

2 回答 2

0
import (
    "github.com/opentracing/opentracing-go"
    "github.com/openzipkin/zipkin-go-opentracing"
)
func IdFromSpan(aspan interface{}) uint64 {
    zspan := aspan.(zipkintracer.Span)
    return zspan.Context().TraceID
}
于 2016-06-24T19:52:36.337 回答
0

我不确定这是正确的方法,但这通常应该有效

stdopentracing "github.com/opentracing/opentracing-go"
zipkin "github.com/openzipkin/zipkin-go-opentracing"

[...]

var traceID string

sp := stdopentracing.SpanFromContext(ctx)

if sp != nil {
    traceID = sp.Context().(zipkin.SpanContext).TraceID.ToHex()
}
于 2017-08-19T08:59:32.497 回答