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  }