diff --git a/log/fields_trace.go b/log/fields_trace.go index 0691d04..3c527af 100644 --- a/log/fields_trace.go +++ b/log/fields_trace.go @@ -5,9 +5,14 @@ import ( ) const ( + SpanID = "span_id" TraceID = "trace_id" ) +func FSpanID(traceID string) zap.Field { + return zap.String(SpanID, traceID) +} + func FTraceID(traceID string) zap.Field { return zap.String(TraceID, traceID) } diff --git a/log/with.go b/log/with.go index 7dd231a..ed236ef 100644 --- a/log/with.go +++ b/log/with.go @@ -29,8 +29,8 @@ func WithServiceName(l *zap.Logger, name string) *zap.Logger { } func WithTraceID(l *zap.Logger, ctx context.Context) *zap.Logger { - if spanCtx := trace.SpanContextFromContext(ctx); spanCtx.IsValid() { - l = With(l, FTraceID(spanCtx.TraceID().String())) + if spanCtx := trace.SpanContextFromContext(ctx); spanCtx.IsValid() && spanCtx.IsSampled() { + l = With(l, FTraceID(spanCtx.TraceID().String()), FSpanID(spanCtx.SpanID().String())) } return l } diff --git a/net/http/middleware/telemetry.go b/net/http/middleware/telemetry.go index 09c6fee..d293a79 100644 --- a/net/http/middleware/telemetry.go +++ b/net/http/middleware/telemetry.go @@ -72,8 +72,9 @@ func TelemetryWithOptions(opts TelemetryOptions) Middleware { } if labeler, ok := httplog.LabelerFromRequest(r); ok { - if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() { + if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() { labeler.Add(log.FTraceID(spanCtx.TraceID().String())) + labeler.Add(log.FSpanID(spanCtx.SpanID().String())) } }