jaeger

81 阅读1分钟

怎么打印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
}