Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
Control.Monad.Logger
Description
This module provides the facilities needed for a decoupled logging system.
The MonadLogger
class is implemented by monads that give access to a
logging facility. If you're defining a custom monad, then you may define an
instance of MonadLogger
that routes the log messages to the appropriate
place (e.g., that's what yesod-core
's HandlerT
does). Otherwise, you
may use the LoggingT
monad included in this module (see
runStderrLoggingT
). To simply discard log message, use NoLoggingT
.
As a user of the logging facility, we provide you some convenient Template
Haskell splices that use the MonadLogger
class. They will record their
source file and position, which is very helpful when debugging. See
logDebug
for more information.
Synopsis
- 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
- askLoggerIO :: m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
- data LogLevel
- = LevelDebug
- | LevelInfo
- | LevelWarn
- | LevelError
- | LevelOther Text
- type LogLine = (Loc, LogSource, LogLevel, LogStr)
- type LogSource = Text
- data LogStr
- class ToLogStr msg where
- fromLogStr :: LogStr -> ByteString
- newtype LoggingT (m :: Type -> Type) a = LoggingT {
- runLoggingT :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a
- 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
- logDebug :: Q Exp
- logInfo :: Q Exp
- logWarn :: Q Exp
- logError :: Q Exp
- logOther :: Text -> Q Exp
- logDebugSH :: Q Exp
- logInfoSH :: Q Exp
- logWarnSH :: Q Exp
- logErrorSH :: Q Exp
- logOtherSH :: Text -> Q Exp
- 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
- data Loc = Loc {
- loc_filename :: String
- loc_package :: String
- loc_module :: String
- loc_start :: CharPos
- loc_end :: CharPos
- defaultLoc :: Loc
- defaultOutput :: Handle -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
MonadLogger
class Monad m => MonadLogger (m :: Type -> Type) where Source #
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 () Source #
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 () Source #
Instances
class (MonadLogger m, MonadIO m) => MonadLoggerIO (m :: Type -> Type) where Source #
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 ()) Source #
Request the logging function itself.
Since: 0.3.10
default askLoggerIO :: forall (t :: (Type -> Type) -> Type -> Type) (n :: Type -> Type). (MonadTrans t, MonadLoggerIO n, m ~ t n) => m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) Source #
Instances
Constructors
LevelDebug | |
LevelInfo | |
LevelWarn | |
LevelError | |
LevelOther Text |
Re-export from fast-logger
Instances
ToLogStr LogStr | |
Defined in System.Log.FastLogger.LogStr | |
Monoid LogStr | |
Semigroup LogStr | |
IsString LogStr | |
Defined in System.Log.FastLogger.LogStr Methods fromString :: String -> LogStr | |
Show LogStr | |
Eq LogStr | |
Instances
fromLogStr :: LogStr -> ByteString #
Helper transformers
newtype LoggingT (m :: Type -> Type) a Source #
Monad transformer that adds a new logging function.
Since: 0.2.2
Instances
MonadTransControl LoggingT Source # | |||||
Defined in Control.Monad.Logger Associated Types
| |||||
MonadTrans LoggingT Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadRWS r w s m => MonadRWS r w s (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadBaseControl b m => MonadBaseControl b (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadError e m => MonadError e (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods throwError :: e -> LoggingT m a catchError :: LoggingT m a -> (e -> LoggingT m a) -> LoggingT m a | |||||
MonadReader r m => MonadReader r (LoggingT m) Source # | |||||
MonadState s m => MonadState s (LoggingT m) Source # | |||||
MonadWriter w m => MonadWriter w (LoggingT m) Source # | |||||
MonadBase b m => MonadBase b (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadIO m => MonadIO (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadActive m => MonadActive (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods monadActive :: LoggingT m Bool | |||||
MonadCatch m => MonadCatch (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadMask m => MonadMask (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods mask :: HasCallStack => ((forall a. LoggingT m a -> LoggingT m a) -> LoggingT m b) -> LoggingT m b uninterruptibleMask :: HasCallStack => ((forall a. LoggingT m a -> LoggingT m a) -> LoggingT m b) -> LoggingT m b generalBracket :: HasCallStack => LoggingT m a -> (a -> ExitCase b -> LoggingT m c) -> (a -> LoggingT m b) -> LoggingT m (b, c) | |||||
MonadThrow m => MonadThrow (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
Alternative m => Alternative (LoggingT m) Source # | Since: 0.3.40 | ||||
Applicative m => Applicative (LoggingT m) Source # | |||||
Functor m => Functor (LoggingT m) Source # | |||||
Monad m => Monad (LoggingT m) Source # | |||||
MonadFail m => MonadFail (LoggingT m) Source # | Since: 0.3.30 | ||||
Defined in Control.Monad.Logger | |||||
MonadIO m => MonadLogger (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadIO m => MonadLoggerIO (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadCont m => MonadCont (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadResource m => MonadResource (LoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods liftResourceT :: ResourceT IO a -> LoggingT m a | |||||
MonadUnliftIO m => MonadUnliftIO (LoggingT m) Source # | Since: 0.3.26 | ||||
Defined in Control.Monad.Logger Methods withRunInIO :: ((forall a. LoggingT m a -> IO a) -> IO b) -> LoggingT m b | |||||
(Applicative m, Monoid a) => Monoid (LoggingT m a) Source # | |||||
(Applicative m, Semigroup a) => Semigroup (LoggingT m a) Source # | |||||
type StT LoggingT a Source # | |||||
Defined in Control.Monad.Logger type StT LoggingT a = a | |||||
type StM (LoggingT m) a Source # | |||||
Defined in Control.Monad.Logger type StM (LoggingT m) a = StM m a |
runStderrLoggingT :: MonadIO m => LoggingT m a -> m a Source #
Run a block using a MonadLogger
instance which prints to stderr.
Since: 0.2.2
runStdoutLoggingT :: MonadIO m => LoggingT m a -> m a Source #
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 Source #
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 Source #
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 Source #
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 Source #
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 Source #
Monad transformer that disables logging.
Since: 0.2.4
Constructors
NoLoggingT | |
Fields
|
Instances
MonadTransControl NoLoggingT Source # | |||||
Defined in Control.Monad.Logger Associated Types
Methods liftWith :: Monad m => (Run NoLoggingT -> m a) -> NoLoggingT m a restoreT :: Monad m => m (StT NoLoggingT a) -> NoLoggingT m a | |||||
MonadTrans NoLoggingT Source # | |||||
Defined in Control.Monad.Logger Methods lift :: Monad m => m a -> NoLoggingT m a | |||||
MonadBaseControl b m => MonadBaseControl b (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods liftBaseWith :: (RunInBase (NoLoggingT m) b -> b a) -> NoLoggingT m a restoreM :: StM (NoLoggingT m) a -> NoLoggingT m a | |||||
MonadError e m => MonadError e (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods throwError :: e -> NoLoggingT m a catchError :: NoLoggingT m a -> (e -> NoLoggingT m a) -> NoLoggingT m a | |||||
MonadReader r m => MonadReader r (NoLoggingT m) Source # | Since: 0.3.24 | ||||
Defined in Control.Monad.Logger Methods ask :: NoLoggingT m r local :: (r -> r) -> NoLoggingT m a -> NoLoggingT m a reader :: (r -> a) -> NoLoggingT m a | |||||
MonadState s m => MonadState s (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger | |||||
MonadWriter w m => MonadWriter w (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods writer :: (a, w) -> NoLoggingT m a tell :: w -> NoLoggingT m () listen :: NoLoggingT m a -> NoLoggingT m (a, w) pass :: NoLoggingT m (a, w -> w) -> NoLoggingT m a | |||||
MonadBase b m => MonadBase b (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods liftBase :: b α -> NoLoggingT m α | |||||
MonadIO m => MonadIO (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods liftIO :: IO a -> NoLoggingT m a | |||||
MonadActive m => MonadActive (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods monadActive :: NoLoggingT m Bool | |||||
MonadCatch m => MonadCatch (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods catch :: (HasCallStack, Exception e) => NoLoggingT m a -> (e -> NoLoggingT m a) -> NoLoggingT m a | |||||
MonadMask m => MonadMask (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods mask :: HasCallStack => ((forall a. NoLoggingT m a -> NoLoggingT m a) -> NoLoggingT m b) -> NoLoggingT m b uninterruptibleMask :: HasCallStack => ((forall a. NoLoggingT m a -> NoLoggingT m a) -> NoLoggingT m b) -> NoLoggingT m b generalBracket :: HasCallStack => NoLoggingT m a -> (a -> ExitCase b -> NoLoggingT m c) -> (a -> NoLoggingT m b) -> NoLoggingT m (b, c) | |||||
MonadThrow m => MonadThrow (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods throwM :: (HasCallStack, Exception e) => e -> NoLoggingT m a | |||||
Alternative m => Alternative (NoLoggingT m) Source # | Since: 0.3.40 | ||||
Defined in Control.Monad.Logger Methods empty :: NoLoggingT m a (<|>) :: NoLoggingT m a -> NoLoggingT m a -> NoLoggingT m a some :: NoLoggingT m a -> NoLoggingT m [a] many :: NoLoggingT m a -> NoLoggingT m [a] | |||||
Applicative m => Applicative (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods pure :: a -> NoLoggingT m a (<*>) :: NoLoggingT m (a -> b) -> NoLoggingT m a -> NoLoggingT m b liftA2 :: (a -> b -> c) -> NoLoggingT m a -> NoLoggingT m b -> NoLoggingT m c (*>) :: NoLoggingT m a -> NoLoggingT m b -> NoLoggingT m b (<*) :: NoLoggingT m a -> NoLoggingT m b -> NoLoggingT m a | |||||
Functor m => Functor (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods fmap :: (a -> b) -> NoLoggingT m a -> NoLoggingT m b (<$) :: a -> NoLoggingT m b -> NoLoggingT m a | |||||
Monad m => Monad (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods (>>=) :: NoLoggingT m a -> (a -> NoLoggingT m b) -> NoLoggingT m b (>>) :: NoLoggingT m a -> NoLoggingT m b -> NoLoggingT m b return :: a -> NoLoggingT m a | |||||
MonadFail m => MonadFail (NoLoggingT m) Source # | Since: 0.3.30 | ||||
Defined in Control.Monad.Logger Methods fail :: String -> NoLoggingT m a | |||||
Monad m => MonadLogger (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> NoLoggingT m () Source # | |||||
MonadIO m => MonadLoggerIO (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods askLoggerIO :: NoLoggingT m (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) Source # | |||||
MonadResource m => MonadResource (NoLoggingT m) Source # | |||||
Defined in Control.Monad.Logger Methods liftResourceT :: ResourceT IO a -> NoLoggingT m a | |||||
MonadUnliftIO m => MonadUnliftIO (NoLoggingT m) Source # | Since: 0.3.26 | ||||
Defined in Control.Monad.Logger Methods withRunInIO :: ((forall a. NoLoggingT m a -> IO a) -> IO b) -> NoLoggingT m b | |||||
(Applicative m, Monoid a) => Monoid (NoLoggingT m a) Source # | |||||
Defined in Control.Monad.Logger Methods mempty :: NoLoggingT m a mappend :: NoLoggingT m a -> NoLoggingT m a -> NoLoggingT m a mconcat :: [NoLoggingT m a] -> NoLoggingT m a | |||||
(Applicative m, Semigroup a) => Semigroup (NoLoggingT m a) Source # | |||||
Defined in Control.Monad.Logger Methods (<>) :: NoLoggingT m a -> NoLoggingT m a -> NoLoggingT m a sconcat :: NonEmpty (NoLoggingT m a) -> NoLoggingT m a stimes :: Integral b => b -> NoLoggingT m a -> NoLoggingT m a | |||||
type StT NoLoggingT a Source # | |||||
Defined in Control.Monad.Logger type StT NoLoggingT a = a | |||||
type StM (NoLoggingT m) a Source # | |||||
Defined in Control.Monad.Logger type StM (NoLoggingT m) a = StM m a |
mapNoLoggingT :: (m a -> n b) -> NoLoggingT m a -> NoLoggingT n b Source #
Map the unwrapped computation using the given function.
Since: 0.3.29
newtype WriterLoggingT (m :: Type -> Type) a Source #
Since: 0.3.28
Constructors
WriterLoggingT | |
Fields
|
Instances
execWriterLoggingT :: Functor m => WriterLoggingT m a -> m [LogLine] Source #
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]) Source #
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 Source #
Map the unwrapped computation using the given function.
Since: 0.3.29
TH logging
Generates a function that takes a Text
and logs a LevelDebug
message. Usage:
$(logDebug) "This is a debug log message"
logOther :: Text -> Q Exp Source #
Generates a function that takes a Text
and logs a LevelOther
message. Usage:
$(logOther "My new level") "This is a log message"
TH logging of showable values
logDebugSH :: Q Exp Source #
Generates a function that takes a 'Show a => a' and logs a LevelDebug
message. Usage:
$(logDebugSH) (Just "This is a debug log message")
Since: 0.3.18
See logDebugSH
See logDebugSH
logErrorSH :: Q Exp Source #
See logDebugSH
logOtherSH :: Text -> Q Exp Source #
Generates a function that takes a 'Show a => a' and logs a LevelOther
message. Usage:
$(logOtherSH "My new level") "This is a log message"
TH logging with source
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"
TH util
Non-TH logging
logDebugN :: MonadLogger m => Text -> m () Source #
logInfoN :: MonadLogger m => Text -> m () Source #
logWarnN :: MonadLogger m => Text -> m () Source #
logErrorN :: MonadLogger m => Text -> m () Source #
logOtherN :: MonadLogger m => LogLevel -> Text -> m () Source #
Non-TH logging with source
logWithoutLoc :: (MonadLogger m, ToLogStr msg) => LogSource -> LogLevel -> msg -> m () Source #
Since: 0.3.23
logDebugNS :: MonadLogger m => LogSource -> Text -> m () Source #
logInfoNS :: MonadLogger m => LogSource -> Text -> m () Source #
logWarnNS :: MonadLogger m => LogSource -> Text -> m () Source #
logErrorNS :: MonadLogger m => LogSource -> Text -> m () Source #
logOtherNS :: MonadLogger m => LogSource -> LogLevel -> Text -> m () Source #
Callstack logging
logDebugCS :: MonadLogger m => CallStack -> Text -> m () Source #
Logs a message with location given by CallStack
.
See CallStack
for more convenient
functions for CallStack
based logging.
Since: 0.3.19
logInfoCS :: MonadLogger m => CallStack -> Text -> m () Source #
See logDebugCS
Since: 0.3.19
logWarnCS :: MonadLogger m => CallStack -> Text -> m () Source #
See logDebugCS
Since: 0.3.19
logErrorCS :: MonadLogger m => CallStack -> Text -> m () Source #
See logDebugCS
Since: 0.3.19
logOtherCS :: MonadLogger m => CallStack -> LogLevel -> Text -> m () Source #
See logDebugCS
Since: 0.3.19
utilities for defining your own loggers
Loc
When monad-logger
is compiled with the template_haskell
flag set to true (the default), the Loc
below is a re-export from the template-haskell
package.
When the flag is false, the Loc
below is a copy of that data structure defined in monad-logger
itself.
If you are making a library that:
- Uses
monad-logger
- Uses
Loc
in a type signature - But doesn't need to depend on
template-haskell
for other reasons
You can import Loc
directly from this package, instead of adding an dependency on template-haskell
and importing from there.
This allows users to compile your package in environments that don't support template-haskell
.
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 | |||||
Defined in Language.Haskell.TH.Ppr | |||||
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))))) |
defaultLoc :: Loc Source #
dummy location, used with logWithoutLoc
Since: 0.3.23
defaultOutput :: Handle -> Loc -> LogSource -> LogLevel -> LogStr -> IO () Source #
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