mirror of
https://github.com/go-micro/go-micro.git
synced 2025-05-19 21:23:04 +02:00
48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
package jaeger
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/opentracing/opentracing-go"
|
|
jaegercfg "github.com/uber/jaeger-client-go/config"
|
|
)
|
|
|
|
// NewTracer returns a new Jaeger tracer based on the current configuration,
|
|
// using the given options, and a closer func that can be used to flush buffers
|
|
// before shutdown.
|
|
func NewTracer(opts ...Option) (opentracing.Tracer, io.Closer, error) {
|
|
options := newOptions(opts...)
|
|
|
|
cfg := &jaegercfg.Configuration{}
|
|
if options.FromEnv {
|
|
c, err := jaegercfg.FromEnv()
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
cfg = c
|
|
}
|
|
|
|
if options.Name != "" {
|
|
cfg.ServiceName = options.Name
|
|
}
|
|
|
|
var jOptions []jaegercfg.Option
|
|
if options.Logger != nil {
|
|
jOptions = append(jOptions, jaegercfg.Logger(options.Logger))
|
|
}
|
|
if options.Metrics != nil {
|
|
jOptions = append(jOptions, jaegercfg.Metrics(options.Metrics))
|
|
}
|
|
|
|
tracer, closer, err := cfg.NewTracer(jOptions...)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
if options.GlobalTracer {
|
|
opentracing.SetGlobalTracer(tracer)
|
|
}
|
|
|
|
return tracer, closer, nil
|
|
}
|