Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module extends extends the di logging ecosystem with support for the df1 hierarchical structured logging format.
Particularly, it exports df1
for rendering df1-formatted logs, an
extension to the Di.Core API with vocabulary specific to df1, and
functions like fromDiLog
or fromDf1Log
to convert back and forth between
di and df1 types.
The Di.Df1.Monad module belonging to this same package exports an extension to the Di.Monad API, rather than to Di.Core.
Consider this a preview release: The API is likely to stay stable, but extensive testing, formalization and tooling is due.
Synopsis
- type Df1 = Di Level Path Message
- push :: Segment -> Di level Path msg -> Di level Path msg
- attr :: ToValue value => Key -> value -> Di level Path msg -> Di level Path msg
- debug :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- info :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- notice :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- warning :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- error :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- alert :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- critical :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- emergency :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m ()
- debug' :: MonadIO m => Di Level path Message -> Message -> m ()
- info' :: MonadIO m => Di Level path Message -> Message -> m ()
- notice' :: MonadIO m => Di Level path Message -> Message -> m ()
- warning' :: MonadIO m => Di Level path Message -> Message -> m ()
- error' :: MonadIO m => Di Level path Message -> Message -> m ()
- alert' :: MonadIO m => Di Level path Message -> Message -> m ()
- critical' :: MonadIO m => Di Level path Message -> Message -> m ()
- emergency' :: MonadIO m => Di Level path Message -> Message -> m ()
- debugSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- infoSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- noticeSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- warningSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- errorSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- alertSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- criticalSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- emergencySTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m ()
- df1 :: LineRenderer Level Path Message
- fromDiLog :: Log Level Path Message -> Log
- fromDf1Log :: Log -> Log Level Path Message
- data Level
- data Path
- data Segment
- class ToSegment a where
- data Key
- class ToKey a where
- data Value
- class ToValue a where
- data Message
- class ToMessage a where
Documentation
type Df1 = Di Level Path Message Source #
Convenience type-synonym for a Di
restricted to all the df1
monomorphic types.
Df1
==Di
Level
Path
Message
:: *
This type-synonym is not used within the di-df1
library itself because
all functions exposed in the library have more general types. However,
users are encouraged to use Df1
if they find it useful to reduce
boilerplate and improve type inference.
Hierarchy
Metadata
Logging from IO
debug :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a message intended to be useful only when deliberately debugging a program.
info :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log an informational message.
notice :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a condition that is not an error, but should possibly be handled specially.
warning :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a warning condition, such as an exception being gracefully handled or some missing configuration setting being assigned a default value.
error :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log an error condition, such as an unhandled exception.
alert :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a condition that should be corrected immediately, such as a corrupted database.
critical :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a critical condition that could result in system failure, such as a disk running out of space.
emergency :: (MonadIO m, ToMessage msg) => Di Level path Message -> msg -> m () Source #
Log a message stating that the system is unusable.
Type-inference helpers
Logging from STM
debugSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
infoSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
noticeSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
warningSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
errorSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
alertSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
criticalSTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
emergencySTM :: (Monad m, ToMessage msg) => (forall x. STM x -> m x) -> Di Level path Message -> msg -> m () Source #
Support for Di.Handle
Conversion
fromDiLog :: Log Level Path Message -> Log Source #
Convert a Log
from Df1 to a Log
from Di.Core.
fromDiLog
.fromDf1Log
==id
fromDf1Log
.fromDiLog
==id
fromDf1Log :: Log -> Log Level Path Message Source #
Convert a Log
from Di.Core to a Log
from Df1.
fromDiLog
.fromDf1Log
==id
fromDf1Log
.fromDiLog
==id