servant-tracing-0.1.0.1

Safe HaskellNone
LanguageHaskell2010

Tracing.Core

Synopsis

Documentation

data Span Source #

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

data SpanRelation Source #

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

data SpanRelationTag Source #

Indicates the type of relation this span represents

Constructors

Child 
Follows 

data SpanContext Source #

Uniquely identifies a given Span & points to its encompasing trace

Constructors

SpanContext 

Fields

data SpanTag Source #

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

newtype OpName Source #

Human-readable name for the span

Constructors

OpName Text 

newtype SpanId Source #

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

Constructors

SpanId Int64 

newtype TraceId Source #

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

Constructors

TraceId Int64 

data Tracer Source #

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 Source #

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 Source #

Arguments

:: m Tracer

Tracer is global to the process

currentTrace Source #

Arguments

:: m TraceId

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

currentSpan Source #

Arguments

:: m (IORef SpanId)

Set via recordSpan

isDebug Source #

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 Source #

The type in question may be converted into a SpanTag

Minimal complete definition

toSpanTag

Methods

toSpanTag :: a -> SpanTag Source #

data Tag Source #

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 Source #

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 Source #

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