nop.go raw
1 package tracing
2
3 import "context"
4
5 // NopTracerProvider is a no-op tracing implementation.
6 type NopTracerProvider struct{}
7
8 var _ TracerProvider = (*NopTracerProvider)(nil)
9
10 // Tracer returns a tracer which creates no-op spans.
11 func (NopTracerProvider) Tracer(string, ...TracerOption) Tracer {
12 return nopTracer{}
13 }
14
15 type nopTracer struct{}
16
17 var _ Tracer = (*nopTracer)(nil)
18
19 func (nopTracer) StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) {
20 return ctx, nopSpan{}
21 }
22
23 type nopSpan struct{}
24
25 var _ Span = (*nopSpan)(nil)
26
27 func (nopSpan) Name() string { return "" }
28 func (nopSpan) Context() SpanContext { return SpanContext{} }
29 func (nopSpan) AddEvent(string, ...EventOption) {}
30 func (nopSpan) SetProperty(any, any) {}
31 func (nopSpan) SetStatus(SpanStatus) {}
32 func (nopSpan) End() {}
33