Source File
span.go
Belonging Package
github.com/opentracing/opentracing-go
package opentracingimport ()// SpanContext represents Span state that must propagate to descendant Spans and across process// boundaries (e.g., a <trace_id, span_id, sampled> tuple).type SpanContext interface {// ForeachBaggageItem grants access to all baggage items stored in the// SpanContext.// The handler function will be called for each baggage key/value pair.// The ordering of items is not guaranteed.//// The bool return value indicates if the handler wants to continue iterating// through the rest of the baggage items; for example if the handler is trying to// find some baggage item by pattern matching the name, it can return false// as soon as the item is found to stop further iterations.ForeachBaggageItem(handler func(k, v string) bool)}// Span represents an active, un-finished span in the OpenTracing system.//// Spans are created by the Tracer interface.type Span interface {// Sets the end timestamp and finalizes Span state.//// With the exception of calls to Context() (which are always allowed),// Finish() must be the last call made to any span instance, and to do// otherwise leads to undefined behavior.Finish()// FinishWithOptions is like Finish() but with explicit control over// timestamps and log data.FinishWithOptions(opts FinishOptions)// Context() yields the SpanContext for this Span. Note that the return// value of Context() is still valid after a call to Span.Finish(), as is// a call to Span.Context() after a call to Span.Finish().Context() SpanContext// Sets or changes the operation name.//// Returns a reference to this Span for chaining.SetOperationName(operationName string) Span// Adds a tag to the span.//// 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.//// Returns a reference to this Span for chaining.SetTag(key string, value interface{}) Span// LogFields is an efficient and type-checked way to record key:value// logging data about a Span, though the programming interface is a little// more verbose than LogKV(). Here's an example://// span.LogFields(// log.String("event", "soft error"),// log.String("type", "cache timeout"),// log.Int("waited.millis", 1500))//// Also see Span.FinishWithOptions() and FinishOptions.BulkLogData.LogFields(fields ...log.Field)// LogKV is a concise, readable way to record key:value logging data about// a Span, though unfortunately this also makes it less efficient and less// type-safe than LogFields(). Here's an example://// span.LogKV(// "event", "soft error",// "type", "cache timeout",// "waited.millis", 1500)//// For LogKV (as opposed to LogFields()), the parameters must appear as// key-value pairs, like//// span.LogKV(key1, val1, key2, val2, key3, val3, ...)//// The keys must all be strings. The values may be strings, numeric types,// bools, Go error instances, or arbitrary structs.//// (Note to implementors: consider the log.InterleavedKVToFields() helper)LogKV(alternatingKeyValues ...interface{})// SetBaggageItem sets a key:value pair on this Span and its SpanContext// that also propagates to descendants of this Span.//// SetBaggageItem() enables powerful functionality given a full-stack// opentracing integration (e.g., arbitrary application data from a mobile// app can make it, transparently, all the way into the depths of a storage// system), and with it some powerful costs: use this feature with care.//// IMPORTANT NOTE #1: SetBaggageItem() will only propagate baggage items to// *future* causal descendants of the associated Span.//// IMPORTANT NOTE #2: Use this thoughtfully and with care. Every key and// value is copied into every local *and remote* child of the associated// Span, and that can add up to a lot of network and cpu overhead.//// Returns a reference to this Span for chaining.SetBaggageItem(restrictedKey, value string) Span// Gets the value for a baggage item given its key. Returns the empty string// if the value isn't found in this Span.BaggageItem(restrictedKey string) string// Provides access to the Tracer that created this Span.Tracer() Tracer// Deprecated: use LogFields or LogKVLogEvent(event string)// Deprecated: use LogFields or LogKVLogEventWithPayload(event string, payload interface{})// Deprecated: use LogFields or LogKVLog(data LogData)}// LogRecord is data associated with a single Span log. Every LogRecord// instance must specify at least one Field.type LogRecord struct {Timestamp time.TimeFields []log.Field}// FinishOptions allows Span.FinishWithOptions callers to override the finish// timestamp and provide log data via a bulk interface.type FinishOptions struct {// FinishTime overrides the Span's finish time, or implicitly becomes// time.Now() if FinishTime.IsZero().//// FinishTime must resolve to a timestamp that's >= the Span's StartTime// (per StartSpanOptions).FinishTime time.Time// LogRecords allows the caller to specify the contents of many LogFields()// calls with a single slice. May be nil.//// None of the LogRecord.Timestamp values may be .IsZero() (i.e., they must// be set explicitly). Also, they must be >= the Span's start timestamp and// <= the FinishTime (or time.Now() if FinishTime.IsZero()). Otherwise the// behavior of FinishWithOptions() is undefined.//// If specified, the caller hands off ownership of LogRecords at// FinishWithOptions() invocation time.//// If specified, the (deprecated) BulkLogData must be nil or empty.LogRecords []LogRecord// BulkLogData is DEPRECATED.BulkLogData []LogData}// LogData is DEPRECATEDtype LogData struct {Timestamp time.TimeEvent stringPayload interface{}}// ToLogRecord converts a deprecated LogData to a non-deprecated LogRecordfunc ( *LogData) () LogRecord {var time.Timeif .Timestamp.IsZero() {= time.Now()} else {= .Timestamp}:= LogRecord{Timestamp: ,}if .Payload == nil {.Fields = []log.Field{log.String("event", .Event),}} else {.Fields = []log.Field{log.String("event", .Event),log.Object("payload", .Payload),}}return}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |