64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package tracer provides an interface for distributed tracing
 | 
						|
package tracer
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
)
 | 
						|
 | 
						|
// DefaultTracer is the global default tracer
 | 
						|
var DefaultTracer Tracer = NewTracer()
 | 
						|
 | 
						|
// Tracer is an interface for distributed tracing
 | 
						|
type Tracer interface {
 | 
						|
	// Name return tracer name
 | 
						|
	Name() string
 | 
						|
	// Init tracer with options
 | 
						|
	Init(...Option) error
 | 
						|
	// Start a trace
 | 
						|
	Start(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span)
 | 
						|
}
 | 
						|
 | 
						|
type Span interface {
 | 
						|
	// Tracer return underlining tracer
 | 
						|
	Tracer() Tracer
 | 
						|
	// Finish complete and send span
 | 
						|
	Finish(opts ...SpanOption)
 | 
						|
	// AddEvent add event to span
 | 
						|
	AddEvent(name string, opts ...EventOption)
 | 
						|
	// Context return context with span
 | 
						|
	Context() context.Context
 | 
						|
	// SetName set the span name
 | 
						|
	SetName(name string)
 | 
						|
	// SetLabels set the span labels
 | 
						|
	SetLabels(labels ...Label)
 | 
						|
}
 | 
						|
 | 
						|
type Label struct {
 | 
						|
	val interface{}
 | 
						|
	key string
 | 
						|
}
 | 
						|
 | 
						|
func Any(k string, v interface{}) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 | 
						|
 | 
						|
func String(k string, v string) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 | 
						|
 | 
						|
func Int(k string, v int) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 | 
						|
 | 
						|
func Int64(k string, v int64) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 | 
						|
 | 
						|
func Float64(k string, v float64) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 | 
						|
 | 
						|
func Bool(k string, v bool) Label {
 | 
						|
	return Label{key: k, val: v}
 | 
						|
}
 |