Safe Haskell | None |
---|---|
Language | Haskell2010 |
The LogWriter
type encapsulates an effectful function to write LogMessage
s.
Used in conjunction with the SupportsLogger
class, it
can be used to write messages from within an effectful
computation.
Synopsis
- newtype LogWriter writerM = MkLogWriter {
- runLogWriter :: LogMessage -> writerM ()
- class SupportsLogger h e where
- liftLogWriter :: LogWriter h -> LogMessage -> Eff e ()
- noOpLogWriter :: Applicative m => LogWriter m
- debugTraceLogWriter :: Monad h => LogWriter h
- newtype PureLogWriter a = MkPureLogWriter {
- runPureLogWriter :: Identity a
- listLogWriter :: LogWriter CaptureLogs
- newtype CaptureLogs a = MkCaptureLogs {
- unCaptureLogs :: Eff '[CapturedLogsWriter] a
- type CapturedLogsWriter = Writer LogMessage
- runCapturedLogsWriter :: Eff (CapturedLogsWriter ': e) a -> Eff e (a, [LogMessage])
- consoleLogWriter :: LogWriter IO
- ioHandleLogWriter :: HasCallStack => Handle -> LogWriter IO
- filteringLogWriter :: Monad e => LogPredicate -> LogWriter e -> LogWriter e
- mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e
- mappingLogWriterM :: Monad e => (LogMessage -> e LogMessage) -> LogWriter e -> LogWriter e
- ioLogWriter :: HasCallStack => (LogMessage -> IO ()) -> LogWriter IO
- defaultIoLogWriter :: String -> Facility -> LogWriter IO -> LogWriter IO
LogWriter
Definition
newtype LogWriter writerM Source #
A function that takes a log message and returns an effect that logs the message.
MkLogWriter | |
|
Instances
Applicative w => Default (LogWriter w) Source # | |
Defined in Control.Eff.Log.Writer | |
Handle (LogWriterReader h) e a (LogWriter h -> k) Source # | |
Defined in Control.Eff.Log.Handler handle :: (Eff e a -> LogWriter h -> k) -> Arrs e v a -> LogWriterReader h v -> LogWriter h -> k # handle_relay :: (e ~ (LogWriterReader h ': r'), Relay (LogWriter h -> k) r') => (a -> LogWriter h -> k) -> (Eff e a -> LogWriter h -> k) -> Eff e a -> LogWriter h -> k # respond_relay :: (a -> LogWriter h -> k) -> (Eff e a -> LogWriter h -> k) -> Eff e a -> LogWriter h -> k # |
class SupportsLogger h e where Source #
This class describes how to lift the log writer action into some monad.
The second parameter is almost always Eff x
so usually the method of this class lifts the log writer action into an effect monad.
liftLogWriter :: LogWriter h -> LogMessage -> Eff e () Source #
Instances
Lifted IO e => SupportsLogger IO e Source # | |
Defined in Control.Eff.Log.Writer liftLogWriter :: LogWriter IO -> LogMessage -> Eff e () Source # | |
Member CapturedLogsWriter e => SupportsLogger CaptureLogs e Source # | A The |
Defined in Control.Eff.Log.Writer liftLogWriter :: LogWriter CaptureLogs -> LogMessage -> Eff e () Source # | |
SupportsLogger PureLogWriter e Source # | |
Defined in Control.Eff.Log.Writer liftLogWriter :: LogWriter PureLogWriter -> LogMessage -> Eff e () Source # |
LogWriter
Zoo
Pure Writer
noOpLogWriter :: Applicative m => LogWriter m Source #
debugTraceLogWriter :: Monad h => LogWriter h Source #
A LogWriter
that applies renderLogMessage
to the log message and then
traces it using traceM
.
This LogWriter
work with any base monad.
newtype PureLogWriter a Source #
A base monad for all side effect free LogWriter
.
This is only required e.g. when logs are only either discarded or traced.
See debugTraceLogWriter
or noOpLogWriter
.
This is just a wrapper around Identity
and serves as a type that has a special
SupportsLogger
instance.
Instances
Monad PureLogWriter Source # | |
Defined in Control.Eff.Log.Writer (>>=) :: PureLogWriter a -> (a -> PureLogWriter b) -> PureLogWriter b # (>>) :: PureLogWriter a -> PureLogWriter b -> PureLogWriter b # return :: a -> PureLogWriter a # fail :: String -> PureLogWriter a # | |
Functor PureLogWriter Source # | |
Defined in Control.Eff.Log.Writer fmap :: (a -> b) -> PureLogWriter a -> PureLogWriter b # (<$) :: a -> PureLogWriter b -> PureLogWriter a # | |
Applicative PureLogWriter Source # | |
Defined in Control.Eff.Log.Writer pure :: a -> PureLogWriter a # (<*>) :: PureLogWriter (a -> b) -> PureLogWriter a -> PureLogWriter b # liftA2 :: (a -> b -> c) -> PureLogWriter a -> PureLogWriter b -> PureLogWriter c # (*>) :: PureLogWriter a -> PureLogWriter b -> PureLogWriter b # (<*) :: PureLogWriter a -> PureLogWriter b -> PureLogWriter a # | |
SupportsLogger PureLogWriter e Source # | |
Defined in Control.Eff.Log.Writer liftLogWriter :: LogWriter PureLogWriter -> LogMessage -> Eff e () Source # |
newtype CaptureLogs a Source #
Instances
type CapturedLogsWriter = Writer LogMessage Source #
Alias for the Writer
that contains the captured LogMessage
s from CaptureLogs
.
runCapturedLogsWriter :: Eff (CapturedLogsWriter ': e) a -> Eff e (a, [LogMessage]) Source #
Run a Writer
for LogMessage
s.
Such a Writer
is needed for CaptureLogs
IO Based LogWriter
consoleLogWriter :: LogWriter IO Source #
Write LogMessage
s to standard output, formatted with printLogMessage
.
ioHandleLogWriter :: HasCallStack => Handle -> LogWriter IO Source #
General Combinator
filteringLogWriter :: Monad e => LogPredicate -> LogWriter e -> LogWriter e Source #
A LogWriter
that applies a predicate to the LogMessage
and delegates to
to the given writer of the predicate is satisfied.
mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e Source #
A LogWriter
that applies a function to the LogMessage
and delegates the result to
to the given writer.
mappingLogWriterM :: Monad e => (LogMessage -> e LogMessage) -> LogWriter e -> LogWriter e Source #
Like mappingLogWriter
allow the function that changes the LogMessage
to have effects.
IO Based Combinator
ioLogWriter :: HasCallStack => (LogMessage -> IO ()) -> LogWriter IO Source #
A LogWriter
that uses an IO
action to write the message.
Example use cases for this function are the consoleLogWriter
and the ioHandleLogWriter
.
defaultIoLogWriter :: String -> Facility -> LogWriter IO -> LogWriter IO Source #
Decorate an IO based LogWriter
to set important fields in log messages.
ALl log messages are censored to include basic log message information:
- The messages will carry the given application name in the
lmAppName
field. - The
lmTimestamp
field contains the UTC time of the log event - The
lmThreadId
field contains the thread-Id - The
lmHostname
field contains the FQDN of the current host - The
lmFacility
field contains the givenFacility
It installs the given LogWriter
, wrapped using mappingLogWriterM
.