1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package trace
- import (
- "io"
- )
- var (
- // global tracer
- _tracer Tracer = nooptracer{}
- )
- // SetGlobalTracer SetGlobalTracer
- func SetGlobalTracer(tracer Tracer) {
- _tracer = tracer
- }
- // Tracer is a simple, thin interface for Trace creation and propagation.
- type Tracer interface {
- // New trace instance with given title.
- New(operationName string, opts ...Option) Trace
- // Inject takes the Trace instance and injects it for
- // propagation within `carrier`. The actual type of `carrier` depends on
- // the value of `format`.
- Inject(t Trace, format interface{}, carrier interface{}) error
- // Extract returns a Trace instance given `format` and `carrier`.
- // return `ErrTraceNotFound` if trace not found.
- Extract(format interface{}, carrier interface{}) (Trace, error)
- }
- // New trace instance with given operationName.
- func New(operationName string, opts ...Option) Trace {
- return _tracer.New(operationName, opts...)
- }
- // Inject takes the Trace instance and injects it for
- // propagation within `carrier`. The actual type of `carrier` depends on
- // the value of `format`.
- func Inject(t Trace, format interface{}, carrier interface{}) error {
- return _tracer.Inject(t, format, carrier)
- }
- // Extract returns a Trace instance given `format` and `carrier`.
- // return `ErrTraceNotFound` if trace not found.
- func Extract(format interface{}, carrier interface{}) (Trace, error) {
- return _tracer.Extract(format, carrier)
- }
- // Close trace flush data.
- func Close() error {
- if closer, ok := _tracer.(io.Closer); ok {
- return closer.Close()
- }
- return nil
- }
- // Trace trace common interface.
- type Trace interface {
- // Fork fork a trace with client trace.
- Fork(serviceName, operationName string) Trace
- // Follow
- Follow(serviceName, operationName string) Trace
- // Finish when trace finish call it.
- Finish(err *error)
- // Scan scan trace into info.
- // Deprecated: method Scan is deprecated, use Inject instead of Scan
- // Scan(ti *Info)
- // Adds a tag to the trace.
- //
- // If there is a pre-existing tag set for `key`, it is overwritten.
- //
- // Tag values can be numeric types, strings, or bools. The behavior of
- // other tag value types is undefined at the OpenTracing level. If a
- // tracing system does not know how to handle a particular value type, it
- // may ignore the tag, but shall not panic.
- // NOTE current only support legacy tag: TagAnnotation TagAddress TagComment
- // other will be ignore
- SetTag(tags ...Tag) Trace
- // LogFields is an efficient and type-checked way to record key:value
- // NOTE current unsupport
- SetLog(logs ...LogField) Trace
- // Visit visits the k-v pair in trace, calling fn for each.
- Visit(fn func(k, v string))
- // SetTitle reset trace title
- SetTitle(title string)
- }
|