servant-tracing-0.1.0.2

Safe HaskellNone
LanguageHaskell2010

Tracing.Core

Synopsis

Documentation

data Span #

A timed section of code with a logical name and SpanContext. Individual spans will be reconstructed by an OpenTracing backend into a single trace.

Instances
Show Span # 
Instance details

Defined in Tracing.Core

Methods

showsPrec :: Int -> Span -> ShowS #

show :: Span -> String #

showList :: [Span] -> ShowS #

data SpanRelation #

Spans may be top level, a child, or logically follow from a given span.

Instances
Eq SpanRelation # 
Instance details

Defined in Tracing.Core

Show SpanRelation # 
Instance details

Defined in Tracing.Core

data SpanRelationTag #

Indicates the type of relation this span represents

Constructors

Child 
Follows 

data SpanContext #

Uniquely identifies a given Span & points to its encompasing trace

Constructors

SpanContext 

Fields

Instances
Eq SpanContext # 
Instance details

Defined in Tracing.Core

Show SpanContext # 
Instance details

Defined in Tracing.Core

data SpanTag #

Used to embed additional information into a Span for consumption & viewing in a tracing backend

Instances
Eq SpanTag # 
Instance details

Defined in Tracing.Core

Methods

(==) :: SpanTag -> SpanTag -> Bool #

(/=) :: SpanTag -> SpanTag -> Bool #

Show SpanTag # 
Instance details

Defined in Tracing.Core

ToSpanTag SpanTag # 
Instance details

Defined in Tracing.Core

Methods

toSpanTag :: SpanTag -> SpanTag #

newtype OpName #

Human-readable name for the span

Constructors

OpName Text 
Instances
Eq OpName # 
Instance details

Defined in Tracing.Core

Methods

(==) :: OpName -> OpName -> Bool #

(/=) :: OpName -> OpName -> Bool #

Ord OpName # 
Instance details

Defined in Tracing.Core

Show OpName # 
Instance details

Defined in Tracing.Core

IsString OpName # 
Instance details

Defined in Tracing.Core

Methods

fromString :: String -> OpName #

newtype SpanId #

An opaque & unique identifier for a trace segment, called a Span

Constructors

SpanId Int64 
Instances
Eq SpanId # 
Instance details

Defined in Tracing.Core

Methods

(==) :: SpanId -> SpanId -> Bool #

(/=) :: SpanId -> SpanId -> Bool #

Ord SpanId # 
Instance details

Defined in Tracing.Core

Show SpanId # 
Instance details

Defined in Tracing.Core

FromHttpApiData SpanId # 
Instance details

Defined in Tracing.Core

newtype TraceId #

An opaque & unique identifier for a logical operation. Traces are composed of many Spans

Constructors

TraceId Int64 
Instances
Eq TraceId # 
Instance details

Defined in Tracing.Core

Methods

(==) :: TraceId -> TraceId -> Bool #

(/=) :: TraceId -> TraceId -> Bool #

Ord TraceId # 
Instance details

Defined in Tracing.Core

Show TraceId # 
Instance details

Defined in Tracing.Core

FromHttpApiData TraceId # 
Instance details

Defined in Tracing.Core

data Tracer #

Global context required for tracing. The $sel:spanBuffer:Tracer should be manually drained by library users.

Constructors

Tracer 

Fields

class Monad m => MonadTracer m where #

Indicates that the current monad can provide a Tracer and related context. It assumes some form of environment. While this exposes some mutable state, all of it is hidden away behind the recordSpan api.

Methods

getTracer #

Arguments

:: m Tracer

Tracer is global to the process

currentTrace #

Arguments

:: m TraceId

Set during the initial request from the outside world, this is propagated across all nodes in the call

currentSpan #

Arguments

:: m (IORef SpanId)

Set via recordSpan

isDebug #

Arguments

:: m Bool

Set during the initial request from the outside world, this is propagated across all nodes in the call

class ToSpanTag a where #

The type in question may be converted into a SpanTag

Methods

toSpanTag :: a -> SpanTag #

Instances
ToJSON a => ToSpanTag a # 
Instance details

Defined in Tracing.Core

Methods

toSpanTag :: a -> SpanTag #

ToSpanTag SpanTag # 
Instance details

Defined in Tracing.Core

Methods

toSpanTag :: SpanTag -> SpanTag #

data Tag #

Allows for easily representing multiple types in a tag list

Constructors

ToSpanTag a => Tag Text a 

recordSpan :: (MonadIO m, MonadBaseControl IO m, MonadTracer m) => Maybe SpanRelationTag -> [Tag] -> OpName -> m a -> m a #

Wraps a computation & writes it to the Tracer's IORef. To start a new top-level span, and therefore a new trace, call this function with *spanType* == Nothing. Otherwise, this will create a child span.

Doesn't support parallel computations yet

debugPrintSpan :: Span -> Text #

Dump the details of a span. Used for debugging or logging