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.

Minimal complete definition

getTracer, currentTrace, currentSpan, isDebug

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

Minimal complete definition

toSpanTag

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