nop.go (901B)
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() {}