Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Span = Span {
- operationName :: !OpName
- context :: !SpanContext
- timestamp :: !POSIXTime
- duration :: !NominalDiffTime
- relations :: ![SpanRelation]
- tags :: !(Map Text SpanTag)
- baggage :: !(Map Text Text)
- debug :: !Bool
- serviceName :: !Text
- data SpanRelation
- data SpanRelationTag
- data SpanContext = SpanContext {}
- data SpanTag
- newtype OpName = OpName Text
- newtype SpanId = SpanId Int64
- newtype TraceId = TraceId Int64
- data Tracer = Tracer {
- spanBuffer :: IORef [Span]
- svcName :: Text
- data TracingInstructions = TracingInstructions {}
- class (Monad m, HasSpanId r, MonadReader r m) => MonadTracer m r where
- getTracer :: m Tracer
- currentTrace :: m TraceId
- isDebug :: m Bool
- currentSpan :: m SpanId
- class HasSpanId a where
- class ToSpanTag a where
- data Tag = forall a.ToSpanTag a => Tag Text a
- recordSpan :: (MonadIO m, MonadBaseControl IO m, MonadTracer m r) => Maybe SpanRelationTag -> [Tag] -> OpName -> m a -> m a
- debugPrintSpan :: Span -> Text
Documentation
A timed section of code with a logical name and SpanContext
. Individual spans will be reconstructed by an
OpenTracing backend into a single trace.
Span | |
|
data SpanRelation Source #
Spans may be top level, a child, or logically follow from a given span.
Instances
Eq SpanRelation Source # | |
Defined in Tracing.Core (==) :: SpanRelation -> SpanRelation -> Bool # (/=) :: SpanRelation -> SpanRelation -> Bool # | |
Show SpanRelation Source # | |
Defined in Tracing.Core showsPrec :: Int -> SpanRelation -> ShowS # show :: SpanRelation -> String # showList :: [SpanRelation] -> ShowS # |
data SpanContext Source #
Uniquely identifies a given Span
& points to its encompasing trace
Instances
Eq SpanContext Source # | |
Defined in Tracing.Core (==) :: SpanContext -> SpanContext -> Bool # (/=) :: SpanContext -> SpanContext -> Bool # | |
Show SpanContext Source # | |
Defined in Tracing.Core showsPrec :: Int -> SpanContext -> ShowS # show :: SpanContext -> String # showList :: [SpanContext] -> ShowS # |
Used to embed additional information into a Span for consumption & viewing in a tracing backend
Human-readable name for the span
An opaque & unique identifier for a trace segment, called a Span
An opaque & unique identifier for a logical operation. Traces are composed of many Span
s
Global context required for tracing. The $sel:spanBuffer:Tracer
should be manually drained by library users.
data TracingInstructions Source #
Instructions that are specific to a single trace
Instances
Eq TracingInstructions Source # | |
Defined in Tracing.Core (==) :: TracingInstructions -> TracingInstructions -> Bool # (/=) :: TracingInstructions -> TracingInstructions -> Bool # | |
Show TracingInstructions Source # | |
Defined in Tracing.Core showsPrec :: Int -> TracingInstructions -> ShowS # show :: TracingInstructions -> String # showList :: [TracingInstructions] -> ShowS # | |
FromHttpApiData TracingInstructions Source # | |
Defined in Servant.Tracing |
class (Monad m, HasSpanId r, MonadReader r m) => MonadTracer m r 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.
Allows for easily representing multiple types in a tag list
recordSpan :: (MonadIO m, MonadBaseControl IO m, MonadTracer m r) => 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