vtrace

package
v0.1.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2021 License: BSD-3-Clause Imports: 11 Imported by: 1

Documentation

Overview

Package vtrace implements the Trace and Span interfaces in v.io/v23/vtrace. We also provide internal utilities for migrating trace information across RPC calls.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetVTraceLevel

func GetVTraceLevel(ctx *context.T) int

SetVTraceLevel returns the vtrace level This value is used to determine which log messages are sent as part of the vtrace output.

func Init

func Init(ctx *context.T, opts flags.VtraceFlags) (*context.T, error)

Init initializes vtrace and attaches some state to the context. This should be called by the runtimes initialization function.

func NewSpan

func NewSpan(trace, parent uniqueid.Id, name string, store vtrace.Store) (vtrace.Span, error)

NewSpan creates a new vtrace.Span with supplied trace, parent and name. The span's implementation will record is state in the suppled store.

func NewStore

func NewStore(opts flags.VtraceFlags) (vtrace.Store, error)

NewStore creates a new store according to the passed in opts.

Types

type Logger

type Logger struct{}

func (*Logger) FlushLog

func (v *Logger) FlushLog()

func (*Logger) InfoDepth

func (*Logger) InfoDepth(ctx *context.T, depth int, args ...interface{})

func (*Logger) InfoStack

func (*Logger) InfoStack(ctx *context.T, all bool)

func (*Logger) VDepth

func (*Logger) VDepth(ctx *context.T, depth int, level int) bool

func (*Logger) VIDepth

func (v *Logger) VIDepth(ctx *context.T, depth int, level int) context.Logger

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store implements a store for traces. The idea is to keep all the information we have about some subset of traces that pass through the server. For now we just implement an LRU cache, so the least recently started/finished/annotated traces expire after some maximum trace count is reached. TODO(mattr): LRU is the wrong policy in the long term, we should try to keep some diverse set of traces and allow users to specifically tell us to capture a specific trace. LRU will work OK for many testing scenarios and low volume applications.

func (*Store) Annotate

func (s *Store) Annotate(traceid uniqueid.Id, span vtrace.SpanRecord, annotation vtrace.Annotation)

func (*Store) AnnotateMetadata

func (s *Store) AnnotateMetadata(traceid uniqueid.Id, span vtrace.SpanRecord, key string, value interface{}, indexed bool) error

func (*Store) Finish

func (s *Store) Finish(traceid uniqueid.Id, span vtrace.SpanRecord, timestamp time.Time)

func (*Store) Flags

func (s *Store) Flags(id uniqueid.Id) vtrace.TraceFlags

method returns the collection method for the given trace.

func (*Store) ForceCollect

func (s *Store) ForceCollect(id uniqueid.Id, level int)

func (*Store) LogLevel

func (s *Store) LogLevel(id uniqueid.Id) int

func (*Store) Merge

func (s *Store) Merge(t vtrace.Response)

Merge merges a vtrace.Response into the current store.

func (*Store) Start

func (s *Store) Start(traceid uniqueid.Id, span vtrace.SpanRecord)

func (*Store) TraceRecord

func (s *Store) TraceRecord(id uniqueid.Id) *vtrace.TraceRecord

TraceRecord returns a TraceRecord for a given Id. Returns nil if the given id is not present.

func (*Store) TraceRecords

func (s *Store) TraceRecords() []vtrace.TraceRecord

TraceRecords returns TraceRecords for all traces saved in the store.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL