怎么打印traceID
这里引用了jaeger,将opentraceing的spancontext转换成jaeger的spancontext,jaeger提供了获取traceID的方法
func logSpan(ctx context.Context, level LogLevel, log string, fields ...zapcore.Field) []zapcore.Field {
span := opentracing.SpanFromContext(ctx)
if span == nil {
GetLogger().Info("no span " + log)
return fields
}
if spanCtx, ok := span.Context().(jaeger.SpanContext); ok {
traceid := spanCtx.TraceID().String()
spanid := spanCtx.SpanID().String()
span.SetTag("traceid", traceid)
span.SetTag("spanid", spanid)
fields = append(fields, zap.String("traceid", traceid), zap.String("spanid", spanid))
}
if level == error {
span.SetTag(Level, string(level))
}
traceField := make([]opentracinglog.Field, 0)
if log != "" {
traceField = append(traceField, opentracinglog.Event(log))
}
if len(fields) != 0 {
traceField = append(traceField, utils.ZapFieldsToOpentracing(fields...)...)
}
span.LogFields(traceField...)
return fields
}