From 26a2d18766559a77102d347b9c39ca29d1bd457e Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 24 Dec 2022 18:09:48 +0300 Subject: [PATCH] tracer: fix span options Signed-off-by: Vasiliy Tolstov --- tracer/noop.go | 6 +++--- tracer/options.go | 10 +++++++++- tracer/tracer.go | 31 +------------------------------ 3 files changed, 13 insertions(+), 34 deletions(-) diff --git a/tracer/noop.go b/tracer/noop.go index 261c1ac6..13a2e0c7 100644 --- a/tracer/noop.go +++ b/tracer/noop.go @@ -35,7 +35,7 @@ type noopSpan struct { ctx context.Context tracer Tracer name string - labels []Label + opts SpanOptions } func (s *noopSpan) Finish(opts ...SpanOption) { @@ -56,8 +56,8 @@ func (s *noopSpan) SetName(name string) { s.name = name } -func (s *noopSpan) SetLabels(labels ...Label) { - s.labels = labels +func (s *noopSpan) SetLabels(labels ...interface{}) { + s.opts.Labels = labels } // NewTracer returns new memory tracer diff --git a/tracer/options.go b/tracer/options.go index d0c27604..917d0f95 100644 --- a/tracer/options.go +++ b/tracer/options.go @@ -3,7 +3,9 @@ package tracer import "go.unistack.org/micro/v3/logger" // SpanOptions contains span option -type SpanOptions struct{} +type SpanOptions struct { + Labels []interface{} +} // SpanOption func signature type SpanOption func(o *SpanOptions) @@ -14,6 +16,12 @@ type EventOptions struct{} // EventOption func signature type EventOption func(o *EventOptions) +func SpanLabels(labels ...interface{}) SpanOption { + return func(o *SpanOptions) { + o.Labels = labels + } +} + // Options struct type Options struct { // Logger used for logging diff --git a/tracer/tracer.go b/tracer/tracer.go index becd6f09..7d6ea856 100644 --- a/tracer/tracer.go +++ b/tracer/tracer.go @@ -30,34 +30,5 @@ type Span interface { // SetName set the span name SetName(name string) // SetLabels set the span labels - SetLabels(labels ...Label) -} - -type Label struct { - val interface{} - key string -} - -func LabelAny(k string, v interface{}) Label { - return Label{key: k, val: v} -} - -func LabelString(k string, v string) Label { - return Label{key: k, val: v} -} - -func LabelInt(k string, v int) Label { - return Label{key: k, val: v} -} - -func LabelInt64(k string, v int64) Label { - return Label{key: k, val: v} -} - -func LabelFloat64(k string, v float64) Label { - return Label{key: k, val: v} -} - -func LabelBool(k string, v bool) Label { - return Label{key: k, val: v} + SetLabels(labels ...interface{}) }