tracing-0.0.5.1: Distributed tracing

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Trace

Contents

Description

This module is useful mostly for tracing backend implementors. If you are only interested in adding tracing to an application, start at Monitor.Tracing.

Synopsis

Tracers

data Tracer Source #

A tracer is a producer of spans.

More specifically, a tracer:

These samples can then be consumed independently, decoupling downstream span processing from their production.

newTracer :: MonadIO m => m Tracer Source #

Creates a new Tracer.

runTraceT :: TraceT m a -> Tracer -> m a Source #

Trace an action, sampling its generated spans. This method is thread-safe and can be used to trace multiple actions concurrently.

Unless you are implementing a custom span publication backend, you should not need to call this method explicitly. Instead, prefer to use the backend's functionality directly (e.g. run for Zipkin). To ease debugging in certain cases, collectSpanSamples is also available.

data TraceT m a Source #

A span generation monad.

Instances
MonadTrans TraceT Source # 
Instance details

Defined in Control.Monad.Trace

Methods

lift :: Monad m => m a -> TraceT m a #

MonadReader r m => MonadReader r (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

ask :: TraceT m r #

local :: (r -> r) -> TraceT m a -> TraceT m a #

reader :: (r -> a) -> TraceT m a #

Monad m => Monad (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

(>>=) :: TraceT m a -> (a -> TraceT m b) -> TraceT m b #

(>>) :: TraceT m a -> TraceT m b -> TraceT m b #

return :: a -> TraceT m a #

fail :: String -> TraceT m a #

Functor m => Functor (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

fmap :: (a -> b) -> TraceT m a -> TraceT m b #

(<$) :: a -> TraceT m b -> TraceT m a #

Applicative m => Applicative (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

pure :: a -> TraceT m a #

(<*>) :: TraceT m (a -> b) -> TraceT m a -> TraceT m b #

liftA2 :: (a -> b -> c) -> TraceT m a -> TraceT m b -> TraceT m c #

(*>) :: TraceT m a -> TraceT m b -> TraceT m b #

(<*) :: TraceT m a -> TraceT m b -> TraceT m a #

MonadIO m => MonadIO (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

liftIO :: IO a -> TraceT m a #

MonadUnliftIO m => MonadUnliftIO (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Methods

withRunInIO :: ((forall a. TraceT m a -> IO a) -> IO b) -> TraceT m b #

MonadUnliftIO m => MonadTrace (TraceT m) Source # 
Instance details

Defined in Control.Monad.Trace

Collected data

Tracers currently expose two pieces of data: completed spans and pending span count. Note that only sampled spans are eligible: spans which are neverSampled appear in neither.

Completed spans

spanSamples :: Tracer -> TChan Sample Source #

Returns all newly completed spans' samples. The samples become available in the same order they are completed.

data Sample Source #

A sampled span and its associated metadata.

Constructors

Sample 

Fields

type Tags = Map Key Value Source #

A collection of span tags.

type Logs = [(POSIXTime, Key, Value)] Source #

A collection of span logs.

Pending spans

pendingSpanCount :: Tracer -> TVar Int Source #

Returns the number of spans currently in flight (started but not yet completed).