MCPcopy
hub / github.com/grafana/dskit / NewOTel

Function NewOTel

spanlogger/spanlogger.go:90–114  ·  view source on GitHub ↗
(ctx context.Context, logger log.Logger, tracer trace.Tracer, method string, resolver TenantResolver, kvps ...any)

Source from the content-addressed store, hash-verified

88}
89
90func NewOTel(ctx context.Context, logger log.Logger, tracer trace.Tracer, method string, resolver TenantResolver, kvps ...any) (*SpanLogger, context.Context) {
91 ctx, span := tracer.Start(ctx, method)
92 if ids, err := resolver.TenantIDs(ctx); err == nil && len(ids) > 0 {
93 span.SetAttributes(attribute.StringSlice(TenantIDsTagName, ids))
94 }
95 sampled := span.SpanContext().IsSampled()
96
97 l := &SpanLogger{
98 ctx: ctx,
99 resolver: resolver,
100 baseLogger: log.With(logger, "method", method),
101
102 opentracingSpan: nil,
103 otelSpan: span,
104
105 sampled: sampled,
106 debugEnabled: debugEnabled(logger),
107 }
108 if len(kvps) > 0 {
109 l.DebugLog(kvps...)
110 }
111
112 ctx = context.WithValue(ctx, loggerCtxKey, logger)
113 return l, ctx
114}
115
116// FromContext returns a span logger using the current parent span.
117// If there is no parent span, the SpanLogger will only log to the logger

Calls 6

DebugLogMethod · 0.95
debugEnabledFunction · 0.85
SpanContextMethod · 0.80
WithMethod · 0.80
StartMethod · 0.65
TenantIDsMethod · 0.65