diff --git a/tracer/context.go b/tracer/context.go index 8ff4e621..7cbdf533 100644 --- a/tracer/context.go +++ b/tracer/context.go @@ -46,3 +46,13 @@ func NewSpanContext(ctx context.Context, span Span) context.Context { } return context.WithValue(ctx, spanKey{}, span) } + +// SetOption returns a function to setup a context with given value +func SetOption(k, v interface{}) Option { + return func(o *Options) { + if o.Context == nil { + o.Context = context.Background() + } + o.Context = context.WithValue(o.Context, k, v) + } +} diff --git a/tracer/options.go b/tracer/options.go index 917d0f95..a5035f60 100644 --- a/tracer/options.go +++ b/tracer/options.go @@ -1,6 +1,10 @@ package tracer -import "go.unistack.org/micro/v3/logger" +import ( + "context" + + "go.unistack.org/micro/v3/logger" +) // SpanOptions contains span option type SpanOptions struct { @@ -28,6 +32,8 @@ type Options struct { Logger logger.Logger // Name of the tracer Name string + // Context used to store custome tracer options + Context context.Context } // Option func signature