add tracer enabled status
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		| @@ -46,6 +46,10 @@ func (s memoryStringer) String() string { | ||||
| 	return s.s | ||||
| } | ||||
|  | ||||
| func (t *Tracer) Enabled() bool { | ||||
| 	return t.opts.Enabled | ||||
| } | ||||
|  | ||||
| func (t *Tracer) Flush(_ context.Context) error { | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -20,6 +20,10 @@ func (t *noopTracer) Spans() []Span { | ||||
|  | ||||
| var uuidNil = uuid.Nil.String() | ||||
|  | ||||
| func (t *noopTracer) Enabled() bool { | ||||
| 	return t.opts.Enabled | ||||
| } | ||||
|  | ||||
| func (t *noopTracer) Start(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) { | ||||
| 	options := NewSpanOptions(opts...) | ||||
| 	span := &noopSpan{ | ||||
|   | ||||
| @@ -142,6 +142,8 @@ type Options struct { | ||||
| 	Name string | ||||
| 	// ContextAttrFuncs contains funcs that provides tracing | ||||
| 	ContextAttrFuncs []ContextAttrFunc | ||||
| 	// Enabled specify trace status | ||||
| 	Enabled bool | ||||
| } | ||||
|  | ||||
| // Option func signature | ||||
| @@ -181,6 +183,7 @@ func NewOptions(opts ...Option) Options { | ||||
| 		Logger:           logger.DefaultLogger, | ||||
| 		Context:          context.Background(), | ||||
| 		ContextAttrFuncs: DefaultContextAttrFuncs, | ||||
| 		Enabled:          true, | ||||
| 	} | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| @@ -194,3 +197,10 @@ func Name(n string) Option { | ||||
| 		o.Name = n | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Disabled disable tracer | ||||
| func Disabled(b bool) Option { | ||||
| 	return func(o *Options) { | ||||
| 		o.Enabled = !b | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -51,6 +51,8 @@ type Tracer interface { | ||||
| 	// Extract(ctx context.Context) | ||||
| 	// Flush flushes spans | ||||
| 	Flush(ctx context.Context) error | ||||
| 	// Enabled returns tracer status | ||||
| 	Enabled() bool | ||||
| } | ||||
|  | ||||
| type Span interface { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user