Copyright | (c) Serokell, 2016 |
---|---|
License | GPL-3 (see the file LICENSE) |
Maintainer | Serokell <hi@serokell.io> |
Stability | experimental |
Portability | POSIX, GHC |
Safe Haskell | None |
Language | Haskell2010 |
Logging functionality. This module is wrapper over hslogger, which allows to keep logger name in monadic context. Messages are colored depending on used serverity.
- data Severity
- initLogging :: [LoggerName] -> Severity -> IO ()
- initLoggerByName :: Severity -> LoggerName -> IO ()
- newtype LoggerName = LoggerName {
- loggerName :: String
- class WithNamedLogger m where
- setLoggerName :: WithNamedLogger m => LoggerName -> m a -> m a
- newtype LoggerNameBox m a = LoggerNameBox {
- loggerNameBoxEntry :: ReaderT LoggerName m a
- usingLoggerName :: LoggerName -> LoggerNameBox m a -> m a
- logDebug :: (WithNamedLogger m, MonadIO m) => Text -> m ()
- logError :: (WithNamedLogger m, MonadIO m) => Text -> m ()
- logInfo :: (WithNamedLogger m, MonadIO m) => Text -> m ()
- logWarning :: (WithNamedLogger m, MonadIO m) => Text -> m ()
- logMessage :: (WithNamedLogger m, MonadIO m) => Severity -> Text -> m ()
Documentation
This type is intended to be used as command line option which specifies which messages to print.
initLogging :: [LoggerName] -> Severity -> IO () Source #
Initiates specified loggers, and sets severity of root logger's handler to
Debug
initLoggerByName :: Severity -> LoggerName -> IO () Source #
Turns logger with specified name on.
All messages are printed to stdout, moreover messages with at least
Error
severity are printed to stderr.
newtype LoggerName Source #
Logger name to keep in context.
Show LoggerName Source # | |
IsString LoggerName Source # | |
Monoid LoggerName Source # | Defined such that |
Remove boilerplate
class WithNamedLogger m where Source #
This type class exists to remove boilerplate logging by adding the logger's name to the context in each module.
getLoggerName :: m LoggerName Source #
Extract logger name from context
modifyLoggerName :: (LoggerName -> LoggerName) -> m a -> m a Source #
Change logger name in context
Monad m => WithNamedLogger (LoggerNameBox m) Source # | |
WithNamedLogger (TimedT m) Source # | |
WithNamedLogger (PureRpc m) Source # | |
(Monad m, WithNamedLogger m) => WithNamedLogger (StateT a m) Source # | |
(Monad m, WithNamedLogger m) => WithNamedLogger (ExceptT e m) Source # | |
(Monad m, WithNamedLogger m) => WithNamedLogger (ReaderT * a m) Source # | |
(Monad m, WithNamedLogger m) => WithNamedLogger (ContT * r m) Source # | |
setLoggerName :: WithNamedLogger m => LoggerName -> m a -> m a Source #
Set logger name in context.
newtype LoggerNameBox m a Source #
Default implementation of WithNamedLogger
.
MonadTrans LoggerNameBox Source # | |
MonadState s m => MonadState s (LoggerNameBox m) Source # | |
MonadReader r m => MonadReader r (LoggerNameBox m) Source # | |
Monad m => Monad (LoggerNameBox m) Source # | |
Functor m => Functor (LoggerNameBox m) Source # | |
Applicative m => Applicative (LoggerNameBox m) Source # | |
MonadThrow m => MonadThrow (LoggerNameBox m) Source # | |
MonadIO m => MonadIO (LoggerNameBox m) Source # | |
MonadCatch m => MonadCatch (LoggerNameBox m) Source # | |
MonadMask m => MonadMask (LoggerNameBox m) Source # | |
Monad m => WithNamedLogger (LoggerNameBox m) Source # | |
MonadTimed m => MonadTimed (LoggerNameBox m) Source # | |
MonadRpc m => MonadRpc (LoggerNameBox m) Source # | |
type ThreadId (LoggerNameBox m) Source # | |
usingLoggerName :: LoggerName -> LoggerNameBox m a -> m a Source #
Runs a LoggerNameBox
with specified initial LoggerName
.
Logging functions
logDebug :: (WithNamedLogger m, MonadIO m) => Text -> m () Source #
Shortcut for logMessage
to use according severity.
logError :: (WithNamedLogger m, MonadIO m) => Text -> m () Source #
Shortcut for logMessage
to use according severity.
logInfo :: (WithNamedLogger m, MonadIO m) => Text -> m () Source #
Shortcut for logMessage
to use according severity.
logWarning :: (WithNamedLogger m, MonadIO m) => Text -> m () Source #
Shortcut for logMessage
to use according severity.
logMessage :: (WithNamedLogger m, MonadIO m) => Severity -> Text -> m () Source #
Logs message with specified severity using logger name in context.