package correlation import ( "net/url" "github.com/rs/zerolog" "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" ) type TraceContextHook struct{} func (h TraceContextHook) Run(e *zerolog.Event, level zerolog.Level, msg string) { ctx := e.GetCtx() spanContext := trace.SpanContextFromContext(ctx) trace_id := spanContext.TraceID() if trace_id.IsValid() { e.Stringer("trace_id", trace_id) } } var _ propagation.TextMapCarrier = UrlValuesCarrier{} type UrlValuesCarrier url.Values // Get implements propagation.TextMapCarrier. func (u UrlValuesCarrier) Get(key string) string { return url.Values(u).Get(key) } // Keys implements propagation.TextMapCarrier. func (u UrlValuesCarrier) Keys() []string { raw := map[string][]string(u) ks := make([]string, 0, len(raw)) for k, _ := range raw { ks = append(ks, k) } return ks } // Set implements propagation.TextMapCarrier. func (u UrlValuesCarrier) Set(key string, value string) { url.Values(u).Set(key, value) }