github.com/craicoverflow/tyk@v2.9.6-rc3+incompatible/trace/jaeger/jaeger.go (about) 1 package jaeger 2 3 import ( 4 "io" 5 6 opentracing "github.com/opentracing/opentracing-go" 7 "github.com/uber/jaeger-client-go/config" 8 ) 9 10 // Name is the name of this tracer. 11 const Name = "jaeger" 12 13 type Trace struct { 14 opentracing.Tracer 15 io.Closer 16 } 17 18 func (Trace) Name() string { 19 return Name 20 } 21 22 type Logger interface { 23 Errorf(msg string, args ...interface{}) 24 Infof(msg string, args ...interface{}) 25 } 26 27 type wrapLogger struct { 28 Logger 29 } 30 31 func (w wrapLogger) Error(msg string) { 32 w.Errorf("%s", msg) 33 } 34 35 // Init returns a implementation of tyk.Tracer using jaeger client. 36 func Init(service string, opts map[string]interface{}, log Logger) (*Trace, error) { 37 cfg, err := Load(opts) 38 if service != "" { 39 cfg.ServiceName = service 40 } 41 tr, cls, err := cfg.NewTracer( 42 config.Logger(&wrapLogger{Logger: log}), 43 ) 44 if err != nil { 45 return nil, err 46 } 47 return &Trace{Tracer: tr, Closer: cls}, nil 48 }