hermod-tracing-api:public
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hermod.Tracing.API

Description

Stable public API for the Hermod tracing system.

This is the single-import front door for hermod-tracing-api. It re-exports everything a package needs to:

For tracer authors

Trace                  -- the central carrier opaque type
LogFormatting(..)      -- typeclass: forMachine, forHuman, asMetrics
MetaTrace(..)          -- typeclass: namespaceFor, severityFor, documentFor, …
Metric(..)             -- metric payload (IntM, DoubleM, CounterM, LabelSetM)
Namespace(..)          -- hierarchical trace identifier
SeverityS(..)          -- message severity (Debug … Emergency)
SeverityF(..)          -- severity filter (Nothing = Silence)
Privacy(..)            -- Public | Confidential
DetailLevel(..)        -- DMinimal … DMaximum
Folding(..)            -- wrapper for fold-based stateful tracers

Configuration and control (consumed by hermod-tracing-core)

TraceConfig, ConfigOption, BackendConfig, ConfigReflection, DocCollector, ForwarderAddr, ForwarderMode, TraceOptionForwarder, PrometheusSimpleRun. These appear in type signatures throughout the system; tracer authors typically do not construct them directly.

Synopsis

Documentation

data Trace (m :: Type -> Type) a #

Instances

Instances details
Monad m => Contravariant (Trace m) 
Instance details

Defined in Hermod.Tracing.Types

Methods

contramap :: (a' -> a) -> Trace m a -> Trace m a' Source #

(>$) :: b -> Trace m b -> Trace m a Source #

Monad m => Monoid (Trace m a) 
Instance details

Defined in Hermod.Tracing.Types

Methods

mempty :: Trace m a Source #

mappend :: Trace m a -> Trace m a -> Trace m a Source #

mconcat :: [Trace m a] -> Trace m a Source #

Monad m => Semigroup (Trace m a) 
Instance details

Defined in Hermod.Tracing.Types

Methods

(<>) :: Trace m a -> Trace m a -> Trace m a Source #

sconcat :: NonEmpty (Trace m a) -> Trace m a Source #

stimes :: Integral b => b -> Trace m a -> Trace m a Source #

newtype Folding a b #

Constructors

Folding b 

Instances

Instances details
LogFormatting b => LogFormatting (Folding a b) 
Instance details

Defined in Hermod.Tracing.Types

Methods

forMachine :: DetailLevel -> Folding a b -> Object #

forHuman :: Folding a b -> Text #

asMetrics :: Folding a b -> [Metric] #

data CounterAction #

Instances

Instances details
Generic CounterAction 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Associated Types

type Rep CounterAction :: Type -> Type Source #

Show CounterAction 
Instance details

Defined in Hermod.Tracing.Types.Annotations

NFData CounterAction 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

rnf :: CounterAction -> () Source #

Eq CounterAction 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep CounterAction 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep CounterAction = D1 ('MetaData "CounterAction" "Hermod.Tracing.Types.Annotations" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "CounterIncrement" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CounterAdd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

data DetailLevel #

Instances

Instances details
FromJSON DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

parseJSON :: Value -> Parser DetailLevel

parseJSONList :: Value -> Parser [DetailLevel]

omittedField :: Maybe DetailLevel

ToJSON DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

toJSON :: DetailLevel -> Value

toEncoding :: DetailLevel -> Encoding

toJSONList :: [DetailLevel] -> Value

toEncodingList :: [DetailLevel] -> Encoding

omitField :: DetailLevel -> Bool

Bounded DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Enum DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Generic DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Associated Types

type Rep DetailLevel :: Type -> Type Source #

Show DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

NFData DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

rnf :: DetailLevel -> () Source #

Eq DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Ord DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Serialise DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

encode :: DetailLevel -> Encoding

decode :: Decoder s DetailLevel

encodeList :: [DetailLevel] -> Encoding

decodeList :: Decoder s [DetailLevel]

type Rep DetailLevel 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep DetailLevel = D1 ('MetaData "DetailLevel" "Hermod.Tracing.Types.Annotations" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) ((C1 ('MetaCons "DMinimal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DNormal" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DDetailed" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DMaximum" 'PrefixI 'False) (U1 :: Type -> Type)))

data Metric #

Instances

Instances details
Generic Metric 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Associated Types

type Rep Metric :: Type -> Type Source #

Show Metric 
Instance details

Defined in Hermod.Tracing.Types.Annotations

NFData Metric 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

rnf :: Metric -> () Source #

Eq Metric 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep Metric 
Instance details

Defined in Hermod.Tracing.Types.Annotations

data Namespace a #

Constructors

Namespace 

Fields

Instances

Instances details
Show (Namespace a) 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Eq (Namespace a) 
Instance details

Defined in Hermod.Tracing.Types.Annotations

data Privacy #

Constructors

Confidential 
Public 

Instances

Instances details
Bounded Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Enum Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Generic Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Associated Types

type Rep Privacy :: Type -> Type Source #

Show Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Eq Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Ord Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Serialise Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

encode :: Privacy -> Encoding

decode :: Decoder s Privacy

encodeList :: [Privacy] -> Encoding

decodeList :: Decoder s [Privacy]

type Rep Privacy 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep Privacy = D1 ('MetaData "Privacy" "Hermod.Tracing.Types.Annotations" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "Confidential" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Public" 'PrefixI 'False) (U1 :: Type -> Type))

newtype SeverityF #

Constructors

SeverityF (Maybe SeverityS) 

Instances

Instances details
FromJSON SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

parseJSON :: Value -> Parser SeverityF

parseJSONList :: Value -> Parser [SeverityF]

omittedField :: Maybe SeverityF

ToJSON SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

toJSON :: SeverityF -> Value

toEncoding :: SeverityF -> Encoding

toJSONList :: [SeverityF] -> Value

toEncodingList :: [SeverityF] -> Encoding

omitField :: SeverityF -> Bool

Enum SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Show SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Eq SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Ord SeverityF 
Instance details

Defined in Hermod.Tracing.Types.Annotations

data SeverityS #

Instances

Instances details
FromJSON SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

parseJSON :: Value -> Parser SeverityS

parseJSONList :: Value -> Parser [SeverityS]

omittedField :: Maybe SeverityS

ToJSON SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

toJSON :: SeverityS -> Value

toEncoding :: SeverityS -> Encoding

toJSONList :: [SeverityS] -> Value

toEncodingList :: [SeverityS] -> Encoding

omitField :: SeverityS -> Bool

Bounded SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Enum SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Generic SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Associated Types

type Rep SeverityS :: Type -> Type Source #

Read SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Show SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

NFData SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

rnf :: SeverityS -> () Source #

Eq SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Ord SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Serialise SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

Methods

encode :: SeverityS -> Encoding

decode :: Decoder s SeverityS

encodeList :: [SeverityS] -> Encoding

decodeList :: Decoder s [SeverityS]

type Rep SeverityS 
Instance details

Defined in Hermod.Tracing.Types.Annotations

type Rep SeverityS = D1 ('MetaData "SeverityS" "Hermod.Tracing.Types.Annotations" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (((C1 ('MetaCons "Debug" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Info" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Notice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Warning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Critical" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Alert" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Emergency" 'PrefixI 'False) (U1 :: Type -> Type))))

data BackendConfig #

Instances

Instances details
FromJSON BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

Methods

parseJSON :: Value -> Parser BackendConfig

parseJSONList :: Value -> Parser [BackendConfig]

omittedField :: Maybe BackendConfig

ToJSON BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

Generic BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep BackendConfig :: Type -> Type Source #

Show BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

Eq BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

Ord BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep BackendConfig 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep BackendConfig = D1 ('MetaData "BackendConfig" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) ((C1 ('MetaCons "Forwarder" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Stdout" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FormatLogging))) :+: (C1 ('MetaCons "EKGBackend" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DatapointBackend" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PrometheusSimple" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe HostName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PortNumber))))))

data ConfigOption #

Instances

Instances details
Generic ConfigOption 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep ConfigOption :: Type -> Type Source #

Show ConfigOption 
Instance details

Defined in Hermod.Tracing.Types.Config

Eq ConfigOption 
Instance details

Defined in Hermod.Tracing.Types.Config

Ord ConfigOption 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep ConfigOption 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep ConfigOption = D1 ('MetaData "ConfigOption" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) ((C1 ('MetaCons "ConfSeverity" 'PrefixI 'True) (S1 ('MetaSel ('Just "severity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SeverityF)) :+: C1 ('MetaCons "ConfDetail" 'PrefixI 'True) (S1 ('MetaSel ('Just "detail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DetailLevel))) :+: (C1 ('MetaCons "ConfBackend" 'PrefixI 'True) (S1 ('MetaSel ('Just "backends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BackendConfig])) :+: C1 ('MetaCons "ConfLimiter" 'PrefixI 'True) (S1 ('MetaSel ('Just "maxFrequency") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double))))

data ForwarderMode #

Constructors

Initiator 
Responder 

Instances

Instances details
FromJSON ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

Methods

parseJSON :: Value -> Parser ForwarderMode

parseJSONList :: Value -> Parser [ForwarderMode]

omittedField :: Maybe ForwarderMode

Generic ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep ForwarderMode :: Type -> Type Source #

Show ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

Eq ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

Ord ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep ForwarderMode 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep ForwarderMode = D1 ('MetaData "ForwarderMode" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "Initiator" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Responder" 'PrefixI 'False) (U1 :: Type -> Type))

data PrometheusSimpleRun #

Instances

Instances details
FromJSON PrometheusSimpleRun 
Instance details

Defined in Hermod.Tracing.Types.Config

ToJSON PrometheusSimpleRun 
Instance details

Defined in Hermod.Tracing.Types.Config

Generic PrometheusSimpleRun 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep PrometheusSimpleRun :: Type -> Type Source #

Show PrometheusSimpleRun 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep PrometheusSimpleRun 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep PrometheusSimpleRun = D1 ('MetaData "PrometheusSimpleRun" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "PrometheusSimpleRun" 'PrefixI 'True) ((S1 ('MetaSel ('Just "connTimeout") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Word)) :*: S1 ('MetaSel ('Just "connCountGlobal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Word))) :*: (S1 ('MetaSel ('Just "connCountPerHost") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Word)) :*: S1 ('MetaSel ('Just "connPerSecond") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Double)))))

data TraceOptionForwarder #

Instances

Instances details
FromJSON TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

ToJSON TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

Generic TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep TraceOptionForwarder :: Type -> Type Source #

Show TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

Eq TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

Ord TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep TraceOptionForwarder 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep TraceOptionForwarder = D1 ('MetaData "TraceOptionForwarder" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "TraceOptionForwarder" 'PrefixI 'True) (S1 ('MetaSel ('Just "tofQueueSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word) :*: (S1 ('MetaSel ('Just "tofVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Verbosity) :*: S1 ('MetaSel ('Just "tofMaxReconnectDelay") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word))))

data Verbosity #

Constructors

Maximum 
Minimum 

Instances

Instances details
FromJSON Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

Methods

parseJSON :: Value -> Parser Verbosity

parseJSONList :: Value -> Parser [Verbosity]

omittedField :: Maybe Verbosity

ToJSON Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

Methods

toJSON :: Verbosity -> Value

toEncoding :: Verbosity -> Encoding

toJSONList :: [Verbosity] -> Value

toEncodingList :: [Verbosity] -> Encoding

omitField :: Verbosity -> Bool

Generic Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

Associated Types

type Rep Verbosity :: Type -> Type Source #

Show Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

Eq Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

Ord Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep Verbosity 
Instance details

Defined in Hermod.Tracing.Types.Config

type Rep Verbosity = D1 ('MetaData "Verbosity" "Hermod.Tracing.Types.Config" "hermod-tracing-api-1.0.0-LO80W9OfQJv10WJ5Ly2Uoc-internal" 'False) (C1 ('MetaCons "Maximum" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Minimum" 'PrefixI 'False) (U1 :: Type -> Type))

newtype DocCollector #

Constructors

DocCollector (IORef (Map Int LogDoc)) 

class LogFormatting a where #

Minimal complete definition

forMachine

Methods

forMachine :: DetailLevel -> a -> Object #

forHuman :: a -> Text #

asMetrics :: a -> [Metric] #

Instances

Instances details
LogFormatting b => LogFormatting (Folding a b) 
Instance details

Defined in Hermod.Tracing.Types

Methods

forMachine :: DetailLevel -> Folding a b -> Object #

forHuman :: Folding a b -> Text #

asMetrics :: Folding a b -> [Metric] #

traceWith :: Monad m => Trace m a -> a -> m () #

unfold :: Folding a b -> b #

routingTrace :: Monad m => (a -> m (Trace m a)) -> Trace m a -> Trace m a #

filterTraceMaybe :: forall (m :: Type -> Type) a. Monad m => Trace m a -> Trace m (Maybe a) #

emptyLoggingContext :: LoggingContext #

nsGetTuple :: Namespace a -> ([Text], [Text]) #

nsRawToText :: ([Text], [Text]) -> Text #

emptyLogDoc :: Text -> [(Text, Text)] -> LogDoc #

contramapM :: Monad m => Trace m b -> (a -> m b) -> Trace m a Source #

Contramap a monadic function over a trace.

contramapMCond :: Monad m => Trace m b -> (a -> m (Maybe b)) -> Trace m a Source #

Like contramapM but can also filter out messages by returning Nothing.

foldTraceM :: forall a acc m. MonadUnliftIO m => (acc -> a -> m acc) -> acc -> Trace m (Folding a acc) -> m (Trace m a) Source #

Fold a monadic accumulator function over a trace. Uses an MVar to hold the state.

foldCondTraceM :: forall a acc m. MonadUnliftIO m => (acc -> a -> m acc) -> acc -> (a -> Bool) -> Trace m (Folding a acc) -> m (Trace m a) Source #

Like foldTraceM but additionally filter the trace by a predicate.

filterTrace :: Monad m => (a -> Bool) -> Trace m a -> Trace m a Source #