Blammo-2.1.1.0: Batteries-included Structured Logging library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Blammo.Logging

Synopsis

Documentation

data LogLevel #

Instances

Instances details
Read LogLevel 
Instance details

Defined in Control.Monad.Logger

Show LogLevel 
Instance details

Defined in Control.Monad.Logger

Eq LogLevel 
Instance details

Defined in Control.Monad.Logger

Ord LogLevel 
Instance details

Defined in Control.Monad.Logger

Lift LogLevel 
Instance details

Defined in Control.Monad.Logger

Methods

lift :: Quote m => LogLevel -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => LogLevel -> Code m LogLevel #

data Logger Source #

Instances

Instances details
HasLogger Logger Source # 
Instance details

Defined in Blammo.Logging.Internal.Logger

Re-exports from Control.Monad.Logger.Aeson

Messages

data Message #

A Message captures a textual component and a metadata component. The metadata component is a list of SeriesElem to support tacking on arbitrary structured data to a log message.

With the OverloadedStrings extension enabled, Message values can be constructed without metadata fairly conveniently, just as if we were using Text directly:

logDebug "Some log message without metadata"

Metadata may be included in a Message via the :# constructor:

logDebug $ "Some log message with metadata" :#
  [ "bloorp" .= (42 :: Int)
  , "bonk" .= ("abc" :: Text)
  ]

The mnemonic for the :# constructor is that the # symbol is sometimes referred to as a hash, a JSON object can be thought of as a hash map, and so with :# (and enough squinting), we are cons-ing a textual message onto a JSON object. Yes, this mnemonic isn't well-typed, but hopefully it still helps!

Since: monad-logger-aeson-0.1.0.0

Constructors

Text :# [SeriesElem] infixr 5 

Instances

Instances details
IsString Message 
Instance details

Defined in Control.Monad.Logger.Aeson.Internal

Methods

fromString :: String -> Message #

ToLogStr Message 
Instance details

Defined in Control.Monad.Logger.Aeson.Internal

Methods

toLogStr :: Message -> LogStr #

(.=) :: (KeyValue e kv, ToJSON v) => Key -> v -> kv infixr 8 #

data Series #

A series of values that, when encoded, should be separated by commas. Since 0.11.0.0, the .= operator is overloaded to create either (Text, Value) or Series. You can use Series when encoding directly to a bytestring builder as in the following example:

toEncoding (Person name age) = pairs ("name" .= name <> "age" .= age)

Instances

Instances details
Monoid Series 
Instance details

Defined in Data.Aeson.Encoding.Internal

Semigroup Series 
Instance details

Defined in Data.Aeson.Encoding.Internal

KeyValue Encoding Series 
Instance details

Defined in Data.Aeson.Types.ToJSON

Methods

(.=) :: ToJSON v => Key -> v -> Series #

explicitToField :: (v -> Encoding) -> Key -> v -> Series #

KeyValueOmit Encoding Series 
Instance details

Defined in Data.Aeson.Types.ToJSON

Methods

(.?=) :: ToJSON v => Key -> v -> Series #

explicitToFieldOmit :: (v -> Bool) -> (v -> Encoding) -> Key -> v -> Series #

e ~ Encoding => KeyValuePair e Series 
Instance details

Defined in Data.Aeson.Types.ToJSON

Methods

pair :: Key -> e -> Series

a ~ Value => FromPairs (Encoding' a) Series 
Instance details

Defined in Data.Aeson.Types.ToJSON

Methods

fromPairs :: Series -> Encoding' a

Classes

class Monad m => MonadLogger (m :: Type -> Type) where #

A Monad which has the ability to log messages in some manner.

Minimal complete definition

Nothing

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> m () #

Instances

Instances details
MonadIO m => MonadLogger (LoggingT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> LoggingT m () #

Monad m => MonadLogger (NoLoggingT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> NoLoggingT m () #

Monad m => MonadLogger (WriterLoggingT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterLoggingT m () #

MonadLogger m => MonadLogger (ResourceT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ResourceT m () #

MonadLogger m => MonadLogger (MaybeT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> MaybeT m () #

(MonadIO m, HasLogger env) => MonadLogger (WithLogger env m) Source # 
Instance details

Defined in Blammo.Logging.WithLogger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WithLogger env m () #

MonadLogger m => MonadLogger (ExceptT e m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ExceptT e m () #

MonadLogger m => MonadLogger (IdentityT m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> IdentityT m () #

MonadLogger m => MonadLogger (ReaderT r m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ReaderT r m () #

MonadLogger m => MonadLogger (StateT s m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> StateT s m () #

MonadLogger m => MonadLogger (StateT s m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> StateT s m () #

(MonadLogger m, Monoid w) => MonadLogger (WriterT w m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterT w m () #

(MonadLogger m, Monoid w) => MonadLogger (WriterT w m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterT w m () #

MonadLogger m => MonadLogger (ConduitM i o m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ConduitM i o m () #

MonadLogger m => MonadLogger (ContT r m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ContT r m () #

(MonadLogger m, Monoid w) => MonadLogger (RWST r w s m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> RWST r w s m () #

(MonadLogger m, Monoid w) => MonadLogger (RWST r w s m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> RWST r w s m () #

MonadLogger m => MonadLogger (Pipe l i o u m) 
Instance details

Defined in Control.Monad.Logger

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> Pipe l i o u m () #

class (MonadLogger m, MonadIO m) => MonadLoggerIO (m :: Type -> Type) where #

An extension of MonadLogger for the common case where the logging action is a simple IO action. The advantage of using this typeclass is that the logging function itself can be extracted as a first-class value, which can make it easier to manipulate monad transformer stacks, as an example.

Since: monad-logger-0.3.10

Minimal complete definition

Nothing

Methods

askLoggerIO :: m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

Request the logging function itself.

Since: monad-logger-0.3.10

Instances

Instances details
MonadIO m => MonadLoggerIO (LoggingT m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: LoggingT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadIO m => MonadLoggerIO (NoLoggingT m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: NoLoggingT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (ResourceT m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: ResourceT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (MaybeT m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: MaybeT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

(MonadIO m, HasLogger env) => MonadLoggerIO (WithLogger env m) Source # 
Instance details

Defined in Blammo.Logging.WithLogger

Methods

askLoggerIO :: WithLogger env m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (ExceptT e m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: ExceptT e m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (IdentityT m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: IdentityT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (ReaderT r m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: ReaderT r m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (StateT s m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: StateT s m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (StateT s m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: StateT s m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

(MonadLoggerIO m, Monoid w) => MonadLoggerIO (WriterT w m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: WriterT w m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

(MonadLoggerIO m, Monoid w) => MonadLoggerIO (WriterT w m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: WriterT w m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (ConduitM i o m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: ConduitM i o m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (ContT r m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: ContT r m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

(MonadLoggerIO m, Monoid w) => MonadLoggerIO (RWST r w s m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: RWST r w s m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

(MonadLoggerIO m, Monoid w) => MonadLoggerIO (RWST r w s m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: RWST r w s m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadLoggerIO m => MonadLoggerIO (Pipe l i o u m) 
Instance details

Defined in Control.Monad.Logger

Methods

askLoggerIO :: Pipe l i o u m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

Common logging functions

Import Control.Monad.Logger.Aeson if you want more

Implicit call stack, no LogSource

logDebug :: (HasCallStack, MonadLogger m) => Message -> m () #

Logs a Message with the location provided by an implicit CallStack.

Since: monad-logger-aeson-0.1.0.0

logInfo :: (HasCallStack, MonadLogger m) => Message -> m () #

See logDebug

Since: monad-logger-aeson-0.1.0.0

logWarn :: (HasCallStack, MonadLogger m) => Message -> m () #

See logDebug

Since: monad-logger-aeson-0.1.0.0

logError :: (HasCallStack, MonadLogger m) => Message -> m () #

See logDebug

Since: monad-logger-aeson-0.1.0.0

logOther :: (HasCallStack, MonadLogger m) => LogLevel -> Message -> m () #

See logDebug

Since: monad-logger-aeson-0.1.0.0

Implicit call stack, with LogSource

logDebugNS :: (HasCallStack, MonadLogger m) => LogSource -> Message -> m () #

See logDebugCS

Since: monad-logger-aeson-0.1.0.0

logInfoNS :: (HasCallStack, MonadLogger m) => LogSource -> Message -> m () #

See logDebugNS

Since: monad-logger-aeson-0.1.0.0

logWarnNS :: (HasCallStack, MonadLogger m) => LogSource -> Message -> m () #

See logDebugNS

Since: monad-logger-aeson-0.1.0.0

logErrorNS :: (HasCallStack, MonadLogger m) => LogSource -> Message -> m () #

See logDebugNS

Since: monad-logger-aeson-0.1.0.0

logOtherNS :: (HasCallStack, MonadLogger m) => LogSource -> LogLevel -> Message -> m () #

See logDebugNS

Since: monad-logger-aeson-0.1.0.0