Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Control.Monad.Logger.CallStack
Description
Log functions using CallStack support in place of Template Haskell
Since: 0.3.19
Synopsis
- class ToLogStr msg where
- data LogStr
- fromLogStr :: LogStr -> ByteString
- data Loc = Loc {}
- class Monad m => MonadLogger (m :: Type -> Type) where
- monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> m ()
- class (MonadLogger m, MonadIO m) => MonadLoggerIO (m :: Type -> Type) where
- data LogLevel
- type LogLine = (Loc, LogSource, LogLevel, LogStr)
- type LogSource = Text
- newtype LoggingT (m :: Type -> Type) a = LoggingT {}
- runStderrLoggingT :: MonadIO m => LoggingT m a -> m a
- runStdoutLoggingT :: MonadIO m => LoggingT m a -> m a
- runChanLoggingT :: MonadIO m => Chan LogLine -> LoggingT m a -> m a
- runFileLoggingT :: MonadBaseControl IO m => FilePath -> LoggingT m a -> m a
- unChanLoggingT :: (MonadLogger m, MonadIO m) => Chan LogLine -> m void
- withChannelLogger :: forall (m :: Type -> Type) a. (MonadBaseControl IO m, MonadIO m) => Int -> LoggingT m a -> LoggingT m a
- filterLogger :: forall (m :: Type -> Type) a. (LogSource -> LogLevel -> Bool) -> LoggingT m a -> LoggingT m a
- newtype NoLoggingT (m :: Type -> Type) a = NoLoggingT {
- runNoLoggingT :: m a
- mapNoLoggingT :: (m a -> n b) -> NoLoggingT m a -> NoLoggingT n b
- newtype WriterLoggingT (m :: Type -> Type) a = WriterLoggingT {
- unWriterLoggingT :: m (a, DList LogLine)
- execWriterLoggingT :: Functor m => WriterLoggingT m a -> m [LogLine]
- runWriterLoggingT :: Functor m => WriterLoggingT m a -> m (a, [LogLine])
- mapLoggingT :: (m a -> n b) -> LoggingT m a -> LoggingT n b
- logDebugS :: Q Exp
- logInfoS :: Q Exp
- logWarnS :: Q Exp
- logErrorS :: Q Exp
- logOtherS :: Q Exp
- liftLoc :: Loc -> Q Exp
- logDebugN :: MonadLogger m => Text -> m ()
- logInfoN :: MonadLogger m => Text -> m ()
- logWarnN :: MonadLogger m => Text -> m ()
- logErrorN :: MonadLogger m => Text -> m ()
- logOtherN :: MonadLogger m => LogLevel -> Text -> m ()
- logWithoutLoc :: (MonadLogger m, ToLogStr msg) => LogSource -> LogLevel -> msg -> m ()
- logDebugNS :: MonadLogger m => LogSource -> Text -> m ()
- logInfoNS :: MonadLogger m => LogSource -> Text -> m ()
- logWarnNS :: MonadLogger m => LogSource -> Text -> m ()
- logErrorNS :: MonadLogger m => LogSource -> Text -> m ()
- logOtherNS :: MonadLogger m => LogSource -> LogLevel -> Text -> m ()
- logDebugCS :: MonadLogger m => CallStack -> Text -> m ()
- logInfoCS :: MonadLogger m => CallStack -> Text -> m ()
- logWarnCS :: MonadLogger m => CallStack -> Text -> m ()
- logErrorCS :: MonadLogger m => CallStack -> Text -> m ()
- logOtherCS :: MonadLogger m => CallStack -> LogLevel -> Text -> m ()
- defaultLogStr :: Loc -> LogSource -> LogLevel -> LogStr -> LogStr
- defaultLoc :: Loc
- defaultOutput :: Handle -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
- logDebug :: (HasCallStack, MonadLogger m) => Text -> m ()
- logInfo :: (HasCallStack, MonadLogger m) => Text -> m ()
- logWarn :: (HasCallStack, MonadLogger m) => Text -> m ()
- logError :: (HasCallStack, MonadLogger m) => Text -> m ()
- logOther :: (HasCallStack, MonadLogger m) => LogLevel -> Text -> m ()
- logDebugSH :: (HasCallStack, MonadLogger m, Show a) => a -> m ()
- logInfoSH :: (HasCallStack, MonadLogger m, Show a) => a -> m ()
- logWarnSH :: (HasCallStack, MonadLogger m, Show a) => a -> m ()
- logErrorSH :: (HasCallStack, MonadLogger m, Show a) => a -> m ()
- logOtherSH :: (HasCallStack, MonadLogger m, Show a) => LogLevel -> a -> m ()
Documentation
Types that can be converted to a LogStr
. Instances for
types from the text
library use a UTF-8 encoding. Instances
for numerical types use a decimal encoding.
Instances
Log message builder. Use (<>
) to append two LogStr in O(1).
fromLogStr :: LogStr -> ByteString #
Converting LogStr
to ByteString
.
Constructors
Loc | |
Fields
|
Instances
Data Loc | |||||
Defined in Language.Haskell.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Loc -> c Loc # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Loc # dataTypeOf :: Loc -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Loc) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Loc) # gmapT :: (forall b. Data b => b -> b) -> Loc -> Loc # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r # gmapQ :: (forall d. Data d => d -> u) -> Loc -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Loc -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Loc -> m Loc # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc # | |||||
Generic Loc | |||||
Defined in Language.Haskell.TH.Syntax Associated Types
| |||||
Show Loc | |||||
Eq Loc | |||||
Ord Loc | |||||
Ppr Loc | |||||
type Rep Loc | |||||
Defined in Language.Haskell.TH.Syntax type Rep Loc = D1 ('MetaData "Loc" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "Loc" 'PrefixI 'True) ((S1 ('MetaSel ('Just "loc_filename") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "loc_package") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Just "loc_module") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "loc_start") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos) :*: S1 ('MetaSel ('Just "loc_end") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos))))) |
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 () #
default monadLoggerLog :: forall (m' :: Type -> Type) (t :: (Type -> Type) -> Type -> Type) msg. (MonadLogger m', MonadTrans t, MonadLogger (t m'), ToLogStr msg, m ~ t m') => Loc -> LogSource -> LogLevel -> msg -> m () #
Instances
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: 0.3.10
Minimal complete definition
Nothing
Methods
askLoggerIO :: m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #
Request the logging function itself.
Since: 0.3.10
Instances
Constructors
LevelDebug | |
LevelInfo | |
LevelWarn | |
LevelError | |
LevelOther Text |
newtype LoggingT (m :: Type -> Type) a #
Monad transformer that adds a new logging function.
Since: 0.2.2
Instances
runStderrLoggingT :: MonadIO m => LoggingT m a -> m a #
Run a block using a MonadLogger
instance which prints to stderr.
Since: 0.2.2
runStdoutLoggingT :: MonadIO m => LoggingT m a -> m a #
Run a block using a MonadLogger
instance which prints to stdout.
Since: 0.2.2
runChanLoggingT :: MonadIO m => Chan LogLine -> LoggingT m a -> m a #
Run a block using a MonadLogger
instance which writes tuples to an
unbounded channel.
The tuples can be extracted (ie. in another thread) with unChanLoggingT
or a custom extraction funtion, and written to a destination.
Since: 0.3.17
runFileLoggingT :: MonadBaseControl IO m => FilePath -> LoggingT m a -> m a #
Run a block using a MonadLogger
instance which appends to the specified file.
Since: 0.3.22
unChanLoggingT :: (MonadLogger m, MonadIO m) => Chan LogLine -> m void #
Read logging tuples from an unbounded channel and log them into a
MonadLoggerIO
monad, forever.
For use in a dedicated thread with a channel fed by runChanLoggingT
.
Since: 0.3.17
Arguments
:: forall (m :: Type -> Type) a. (MonadBaseControl IO m, MonadIO m) | |
=> Int | Number of messages to keep |
-> LoggingT m a | |
-> LoggingT m a |
Within the LoggingT
monad, capture all log messages to a bounded
channel of the indicated size, and only actually log them if there is an
exception.
Since: 0.3.2
filterLogger :: forall (m :: Type -> Type) a. (LogSource -> LogLevel -> Bool) -> LoggingT m a -> LoggingT m a #
Only log messages passing the given predicate function.
This can be a convenient way, for example, to ignore debug level messages.
Since: 0.3.13
newtype NoLoggingT (m :: Type -> Type) a #
Monad transformer that disables logging.
Since: 0.2.4
Constructors
NoLoggingT | |
Fields
|
Instances
mapNoLoggingT :: (m a -> n b) -> NoLoggingT m a -> NoLoggingT n b #
Map the unwrapped computation using the given function.
Since: 0.3.29
newtype WriterLoggingT (m :: Type -> Type) a #
Since: 0.3.28
Constructors
WriterLoggingT | |
Fields
|
Instances
MonadTransControl WriterLoggingT # | |||||
Defined in Control.Monad.Logger Associated Types
Methods liftWith :: Monad m => (Run WriterLoggingT -> m a) -> WriterLoggingT m a # restoreT :: Monad m => m (StT WriterLoggingT a) -> WriterLoggingT m a # | |||||
MonadTrans WriterLoggingT # | |||||
Defined in Control.Monad.Logger Methods lift :: Monad m => m a -> WriterLoggingT m a # | |||||
MonadBaseControl b m => MonadBaseControl b (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods liftBaseWith :: (RunInBase (WriterLoggingT m) b -> b a) -> WriterLoggingT m a # restoreM :: StM (WriterLoggingT m) a -> WriterLoggingT m a # | |||||
MonadBase b m => MonadBase b (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods liftBase :: b α -> WriterLoggingT m α # | |||||
MonadIO m => MonadIO (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods liftIO :: IO a -> WriterLoggingT m a # | |||||
MonadCatch m => MonadCatch (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods catch :: (HasCallStack, Exception e) => WriterLoggingT m a -> (e -> WriterLoggingT m a) -> WriterLoggingT m a # | |||||
MonadMask m => MonadMask (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods mask :: HasCallStack => ((forall a. WriterLoggingT m a -> WriterLoggingT m a) -> WriterLoggingT m b) -> WriterLoggingT m b # uninterruptibleMask :: HasCallStack => ((forall a. WriterLoggingT m a -> WriterLoggingT m a) -> WriterLoggingT m b) -> WriterLoggingT m b # generalBracket :: HasCallStack => WriterLoggingT m a -> (a -> ExitCase b -> WriterLoggingT m c) -> (a -> WriterLoggingT m b) -> WriterLoggingT m (b, c) # | |||||
MonadThrow m => MonadThrow (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods throwM :: (HasCallStack, Exception e) => e -> WriterLoggingT m a # | |||||
Applicative m => Applicative (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods pure :: a -> WriterLoggingT m a # (<*>) :: WriterLoggingT m (a -> b) -> WriterLoggingT m a -> WriterLoggingT m b # liftA2 :: (a -> b -> c) -> WriterLoggingT m a -> WriterLoggingT m b -> WriterLoggingT m c # (*>) :: WriterLoggingT m a -> WriterLoggingT m b -> WriterLoggingT m b # (<*) :: WriterLoggingT m a -> WriterLoggingT m b -> WriterLoggingT m a # | |||||
Functor m => Functor (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods fmap :: (a -> b) -> WriterLoggingT m a -> WriterLoggingT m b # (<$) :: a -> WriterLoggingT m b -> WriterLoggingT m a # | |||||
Monad m => Monad (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods (>>=) :: WriterLoggingT m a -> (a -> WriterLoggingT m b) -> WriterLoggingT m b # (>>) :: WriterLoggingT m a -> WriterLoggingT m b -> WriterLoggingT m b # return :: a -> WriterLoggingT m a # | |||||
Monad m => MonadLogger (WriterLoggingT m) # | |||||
Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterLoggingT m () # | |||||
(Applicative m, Monoid a) => Monoid (WriterLoggingT m a) # | |||||
Defined in Control.Monad.Logger Methods mempty :: WriterLoggingT m a # mappend :: WriterLoggingT m a -> WriterLoggingT m a -> WriterLoggingT m a # mconcat :: [WriterLoggingT m a] -> WriterLoggingT m a # | |||||
(Applicative m, Semigroup a) => Semigroup (WriterLoggingT m a) # | |||||
Defined in Control.Monad.Logger Methods (<>) :: WriterLoggingT m a -> WriterLoggingT m a -> WriterLoggingT m a # sconcat :: NonEmpty (WriterLoggingT m a) -> WriterLoggingT m a # stimes :: Integral b => b -> WriterLoggingT m a -> WriterLoggingT m a # | |||||
type StT WriterLoggingT a # | |||||
Defined in Control.Monad.Logger | |||||
type StM (WriterLoggingT m) a # | |||||
Defined in Control.Monad.Logger |
execWriterLoggingT :: Functor m => WriterLoggingT m a -> m [LogLine] #
Run a block using a MonadLogger
instance. Return logs in a list
| @since 0.3.28
runWriterLoggingT :: Functor m => WriterLoggingT m a -> m (a, [LogLine]) #
Run a block using a MonadLogger
instance. Return a value and logs in a list
| @since 0.3.28
mapLoggingT :: (m a -> n b) -> LoggingT m a -> LoggingT n b #
Map the unwrapped computation using the given function.
Since: 0.3.29
Generates a function that takes a LogSource
and Text
and logs a LevelDebug
message. Usage:
$logDebugS "SomeSource" "This is a debug log message"
Generates a function that takes a LogSource
, a level name and a Text
and logs a LevelOther
message. Usage:
$logOtherS "SomeSource" "My new level" "This is a log message"
logDebugN :: MonadLogger m => Text -> m () #
logInfoN :: MonadLogger m => Text -> m () #
logWarnN :: MonadLogger m => Text -> m () #
logErrorN :: MonadLogger m => Text -> m () #
logOtherN :: MonadLogger m => LogLevel -> Text -> m () #
logWithoutLoc :: (MonadLogger m, ToLogStr msg) => LogSource -> LogLevel -> msg -> m () #
Since: 0.3.23
logDebugNS :: MonadLogger m => LogSource -> Text -> m () #
logInfoNS :: MonadLogger m => LogSource -> Text -> m () #
logWarnNS :: MonadLogger m => LogSource -> Text -> m () #
logErrorNS :: MonadLogger m => LogSource -> Text -> m () #
logOtherNS :: MonadLogger m => LogSource -> LogLevel -> Text -> m () #
logDebugCS :: MonadLogger m => CallStack -> Text -> m () #
logInfoCS :: MonadLogger m => CallStack -> Text -> m () #
See logDebugCS
Since: 0.3.19
logWarnCS :: MonadLogger m => CallStack -> Text -> m () #
See logDebugCS
Since: 0.3.19
logErrorCS :: MonadLogger m => CallStack -> Text -> m () #
See logDebugCS
Since: 0.3.19
logOtherCS :: MonadLogger m => CallStack -> LogLevel -> Text -> m () #
See logDebugCS
Since: 0.3.19
defaultLoc :: Loc #
dummy location, used with logWithoutLoc
Since: 0.3.23
defaultOutput :: Handle -> Loc -> LogSource -> LogLevel -> LogStr -> IO () #
A default implementation of monadLoggerLog
that accepts a file
handle as the first argument.
This is used in the definition of runStdoutLoggingT
:
runStdoutLoggingT
::MonadIO
m =>LoggingT
m a -> m arunStdoutLoggingT
action =runLoggingT
action (defaultOutput
stdout
)
Since: 0.3.36
logDebug :: (HasCallStack, MonadLogger m) => Text -> m () #
Logs a message with the location provided by
an implicit CallStack
.
Since: 0.3.19
logInfo :: (HasCallStack, MonadLogger m) => Text -> m () #
See logDebug
Since: 0.3.19
logWarn :: (HasCallStack, MonadLogger m) => Text -> m () #
See logDebug
Since: 0.3.19
logError :: (HasCallStack, MonadLogger m) => Text -> m () #
See logDebug
Since: 0.3.19
logOther :: (HasCallStack, MonadLogger m) => LogLevel -> Text -> m () #
See logDebug
Since: 0.3.25
logDebugSH :: (HasCallStack, MonadLogger m, Show a) => a -> m () #
Logs a showable value with the location provided by
an implicit CallStack
.
Since: 0.3.25
logInfoSH :: (HasCallStack, MonadLogger m, Show a) => a -> m () #
See logDebugSH
Since: 0.3.25
logWarnSH :: (HasCallStack, MonadLogger m, Show a) => a -> m () #
See logDebugSH
Since: 0.3.25
logErrorSH :: (HasCallStack, MonadLogger m, Show a) => a -> m () #
See logDebugSH
Since: 0.3.25
logOtherSH :: (HasCallStack, MonadLogger m, Show a) => LogLevel -> a -> m () #
See logDebugSH
Since: 0.3.25