| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Eff.Log.Writer
Contents
Description
The LogWriter type encapsulates an effectful function to write LogMessages.
Used in conjunction with the HandleLogWriter class, it
can be used to write messages from within an effectful
computation.
Synopsis
- newtype LogWriter writerM = MkLogWriter {
- runLogWriter :: LogMessage -> writerM ()
- data LogWriterReader h v
- localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
- askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h)
- runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h ': e) a -> Eff e a
- class HandleLogWriter (writerEff :: Type -> Type) where
- type LogWriterEffects writerEff :: [Type -> Type]
- handleLogWriterEffect :: LogWriterEffects writerEff <:: e => writerEff () -> Eff e ()
- liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writerEff) e, LogWriterEffects writerEff <:: e) => 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.
Constructors
| MkLogWriter | |
Fields
| |
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.Writer Methods 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 # | |
LogWriter Reader Effect
data LogWriterReader h v Source #
A Reader specialized for LogWriters
The existing Reader couldn't be used together with SetMember, so this
lazy reader was written, specialized to reading LogWriter.
Instances
localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a Source #
Modify the current LogWriter.
askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h) Source #
Get the current LogWriter.
runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h ': e) a -> Eff e a Source #
Provide the LogWriter
Exposed for custom extensions, if in doubt use withLogging.
LogWriter Handler Class
class HandleLogWriter (writerEff :: Type -> Type) where Source #
The instances of this class are the monads that define (side-) effect(s) of writting logs.
Minimal complete definition
Associated Types
type LogWriterEffects writerEff :: [Type -> Type] Source #
A list of effects that are required for writing the log messages. For example 'Lift IO' or '[]' for pure log writers.
Methods
handleLogWriterEffect :: LogWriterEffects writerEff <:: e => writerEff () -> Eff e () Source #
liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writerEff) e, LogWriterEffects writerEff <:: e) => LogMessage -> Eff e () Source #
Write a message using the LogWriter found in the environment.
The semantics of this function are a combination of runLogWriter and handleLogWriterEffect,
with the LogWriter read from a LogWriterReader.
Instances
LogWriter Handler Instance 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 phantom type for the HandleLogWriter class for pure LogWriters
Constructors
| MkPureLogWriter | |
Fields
| |
Instances
List Writer
newtype CaptureLogs a Source #
Constructors
| MkCaptureLogs | |
Fields
| |
Instances
type CapturedLogsWriter = Writer LogMessage Source #
Alias for the Writer that contains the captured LogMessages from CaptureLogs.
runCapturedLogsWriter :: Eff (CapturedLogsWriter ': e) a -> Eff e (a, [LogMessage]) Source #
Run a Writer for LogMessages.
Such a Writer is needed for CaptureLogs
IO Writer
consoleLogWriter :: LogWriter IO Source #
Write LogMessages to standard output, formatted with printLogMessage.
ioHandleLogWriter :: HasCallStack => Handle -> LogWriter IO Source #
A LogWriter that renders LogMessages to strings via renderLogMessage
and prints them to an Handle using hPutStrLn.
Writer Combinator
Pure Writer 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.
Impure Writer Combinator
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.
Arguments
| :: String | The default application name to put into the |
| -> Facility | The default RFC-5424 facility to put into the |
| -> LogWriter IO | The IO based writer to decorate |
| -> LogWriter IO |
Decorate an IO based LogWriter to fill out these fields in LogMessages:
- The messages will carry the given application name in the
lmAppNamefield. - The
lmTimestampfield contains the UTC time of the log event - The
lmThreadIdfield contains the thread-Id - The
lmHostnamefield contains the FQDN of the current host - The
lmFacilityfield contains the givenFacility
It works by using mappingLogWriterM.