// FinishWithOptions belongs to the Span interface func (s *MockSpan) FinishWithOptions(opts opentracing.FinishOptions) { s.Lock() s.FinishTime = opts.FinishTime s.Unlock() // Handle any late-bound LogRecords. for _, lr := range opts.LogRecords { s.logFieldsWithTimestamp(lr.Timestamp, lr.Fields...) } // Handle (deprecated) BulkLogData. for _, ld := range opts.BulkLogData { if ld.Payload != nil { s.logFieldsWithTimestamp( ld.Timestamp, log.String("event", ld.Event), log.Object("payload", ld.Payload)) } else { s.logFieldsWithTimestamp( ld.Timestamp, log.String("event", ld.Event)) } } s.tracer.recordSpan(s) }
// ToLogRecord converts a deprecated LogData to a non-deprecated LogRecord func (ld *LogData) ToLogRecord() LogRecord { var literalTimestamp time.Time if ld.Timestamp.IsZero() { literalTimestamp = time.Now() } else { literalTimestamp = ld.Timestamp } rval := LogRecord{ Timestamp: literalTimestamp, } if ld.Payload == nil { rval.Fields = []log.Field{ log.String("event", ld.Event), } } else { rval.Fields = []log.Field{ log.String("event", ld.Event), log.Object("payload", ld.Payload), } } return rval }
// AddLogTag adds a tag; see WithLogTag. func (ac *AmbientContext) AddLogTag(name string, value interface{}) { ac.addTag(otlog.Object(name, value)) }
// LogEventWithPayload belongs to the Span interface func (s *MockSpan) LogEventWithPayload(event string, payload interface{}) { s.LogFields(log.String("event", event), log.Object("payload", payload)) }
// WithLogTag returns a context (derived from the given context) which when used // with a logging function results in the given name and value being printed in // the message. // // The value is stored and passed to fmt.Fprint when the log message is // constructed. A fmt.Stringer can be passed which allows the value to be // "dynamic". // // If the value is nil, just the name shows up. func WithLogTag(ctx context.Context, name string, value interface{}) context.Context { return addLogTagChain(ctx, &logTag{Field: otlog.Object(name, value)}) }