Safe Haskell | None |
---|---|
Language | Haskell2010 |
An RFC 5434 inspired log message and convenience functions for logging them.
Synopsis
- data LogMessage = LogMessage {
- _lmFacility :: Facility
- _lmSeverity :: Severity
- _lmTimestamp :: Maybe UTCTime
- _lmHostname :: Maybe String
- _lmAppname :: Maybe String
- _lmProcessId :: Maybe String
- _lmMessageId :: Maybe String
- _lmStructuredData :: [StructuredDataElement]
- _lmThreadId :: Maybe ThreadId
- _lmSrcLoc :: Maybe SrcLoc
- _lmMessage :: String
- _lmDistance :: Int
- type HasLogging writerM effect = HasLogWriter LogMessage writerM effect
- renderRFC5424 :: LogMessage -> String
- printLogMessage :: LogMessage -> IO ()
- ioLogMessageHandler :: (HasCallStack, Lifted IO e) => LogWriter String IO -> Eff (Logs LogMessage ': (LogWriterReader LogMessage IO ': e)) a -> Eff e a
- ioLogMessageWriter :: HasCallStack => LogWriter String IO -> LogWriter LogMessage IO
- traceLogMessageWriter :: Monad m => LogWriter LogMessage m
- renderLogMessage :: LogMessage -> String
- increaseLogMessageDistance :: (HasCallStack, HasLogWriter LogMessage h e) => Eff e a -> Eff e a
- dropDistantLogMessages :: HasLogging m r => Int -> Eff r a -> Eff r a
- logWithSeverity :: (HasCallStack, Member (Logs LogMessage) e) => Severity -> String -> Eff e ()
- logEmergency :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logAlert :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logCritical :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logError :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logWarning :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logNotice :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logInfo :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- logDebug :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e ()
- errorMessage :: HasCallStack => String -> LogMessage
- infoMessage :: HasCallStack => String -> LogMessage
- debugMessage :: HasCallStack => String -> LogMessage
- errorMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage
- infoMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage
- debugMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage
- data Severity
- emergencySeverity :: Severity
- alertSeverity :: Severity
- criticalSeverity :: Severity
- errorSeverity :: Severity
- warningSeverity :: Severity
- noticeSeverity :: Severity
- informationalSeverity :: Severity
- debugSeverity :: Severity
- data Facility
- kernelMessages :: Facility
- userLevelMessages :: Facility
- mailSystem :: Facility
- systemDaemons :: Facility
- securityAuthorizationMessages4 :: Facility
- linePrinterSubsystem :: Facility
- networkNewsSubsystem :: Facility
- uucpSubsystem :: Facility
- clockDaemon :: Facility
- securityAuthorizationMessages10 :: Facility
- ftpDaemon :: Facility
- ntpSubsystem :: Facility
- logAuditFacility :: Facility
- logAlertFacility :: Facility
- clockDaemon2 :: Facility
- local0 :: Facility
- local1 :: Facility
- local2 :: Facility
- local3 :: Facility
- local4 :: Facility
- local5 :: Facility
- local6 :: Facility
- local7 :: Facility
- lmFacility :: Lens' LogMessage Facility
- lmSeverity :: Lens' LogMessage Severity
- lmTimestamp :: Lens' LogMessage (Maybe UTCTime)
- lmHostname :: Lens' LogMessage (Maybe String)
- lmAppname :: Lens' LogMessage (Maybe String)
- lmProcessId :: Lens' LogMessage (Maybe String)
- lmMessageId :: Lens' LogMessage (Maybe String)
- lmStructuredData :: Lens' LogMessage [StructuredDataElement]
- lmSrcLoc :: Lens' LogMessage (Maybe SrcLoc)
- lmThreadId :: Lens' LogMessage (Maybe ThreadId)
- lmMessage :: Lens' LogMessage String
- lmDistance :: Lens' LogMessage Int
- setCallStack :: CallStack -> LogMessage -> LogMessage
- setLogMessageTimestamp :: MonadIO m => LogMessage -> m LogMessage
- setLogMessageThreadId :: MonadIO m => LogMessage -> m LogMessage
- data StructuredDataElement = SdElement {
- _sdElementId :: String
- _sdElementParameters :: [SdParameter]
- sdElementId :: Lens' StructuredDataElement String
- sdElementParameters :: Lens' StructuredDataElement [SdParameter]
Documentation
data LogMessage Source #
A message data type inspired by the RFC-5424 Syslog Protocol
LogMessage | |
|
Instances
type HasLogging writerM effect = HasLogWriter LogMessage writerM effect Source #
A convenient alias for the constraints that enable logging of LogMessage
s
in the monad, which is Lift
ed into a given Eff
effect list.
renderRFC5424 :: LogMessage -> String Source #
Render a LogMessage
according to the rules in the given RFC, except for
the rules concerning unicode and ascii
printLogMessage :: LogMessage -> IO () Source #
Render a LogMessage
but set the timestamp and thread id fields.
ioLogMessageHandler :: (HasCallStack, Lifted IO e) => LogWriter String IO -> Eff (Logs LogMessage ': (LogWriterReader LogMessage IO ': e)) a -> Eff e a Source #
Use ioLogMessageWriter
to handle logging using handleLogs
.
traceLogMessageWriter :: Monad m => LogWriter LogMessage m Source #
A LogWriter
that applys renderLogMessage
to the log message and then
traces it using traceM
.
renderLogMessage :: LogMessage -> String Source #
Render a LogMessage
human readable.
increaseLogMessageDistance :: (HasCallStack, HasLogWriter LogMessage h e) => Eff e a -> Eff e a Source #
Increase the distance of log messages by one.
Logs can be filtered by their distance with dropDistantLogMessages
dropDistantLogMessages :: HasLogging m r => Int -> Eff r a -> Eff r a Source #
Drop all log messages with an lmDistance
greater than the given
value.
logWithSeverity :: (HasCallStack, Member (Logs LogMessage) e) => Severity -> String -> Eff e () Source #
Log a String
as LogMessage
with a given Severity
.
logEmergency :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a String
as emergencySeverity
.
logAlert :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a message with alertSeverity
.
logCritical :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a criticalSeverity
message.
logError :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a errorSeverity
message.
logWarning :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a warningSeverity
message.
logNotice :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a noticeSeverity
message.
logInfo :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a informationalSeverity
message.
logDebug :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #
Log a debugSeverity
message.
errorMessage :: HasCallStack => String -> LogMessage Source #
Construct a LogMessage
with errorSeverity
infoMessage :: HasCallStack => String -> LogMessage Source #
Construct a LogMessage
with informationalSeverity
debugMessage :: HasCallStack => String -> LogMessage Source #
Construct a LogMessage
with debugSeverity
errorMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage Source #
Construct a LogMessage
with errorSeverity
infoMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage Source #
Construct a LogMessage
with informationalSeverity
debugMessageIO :: (HasCallStack, MonadIO m) => String -> m LogMessage Source #
Construct a LogMessage
with debugSeverity
An rfc 5424 severity
Instances
Eq Severity Source # | |
Ord Severity Source # | |
Defined in Control.Eff.Log.Message | |
Show Severity Source # | |
Generic Severity Source # | |
Default Severity Source # | |
Defined in Control.Eff.Log.Message | |
NFData Severity Source # | |
Defined in Control.Eff.Log.Message | |
type Rep Severity Source # | |
Defined in Control.Eff.Log.Message |
An rfc 5424 facility
Instances
Eq Facility Source # | |
Ord Facility Source # | |
Defined in Control.Eff.Log.Message | |
Show Facility Source # | |
Generic Facility Source # | |
Default Facility Source # | |
Defined in Control.Eff.Log.Message | |
NFData Facility Source # | |
Defined in Control.Eff.Log.Message | |
type Rep Facility Source # | |
Defined in Control.Eff.Log.Message |
lmHostname :: Lens' LogMessage (Maybe String) Source #
lmProcessId :: Lens' LogMessage (Maybe String) Source #
lmMessageId :: Lens' LogMessage (Maybe String) Source #
setCallStack :: CallStack -> LogMessage -> LogMessage Source #
Put the source location of the given callstack in lmSrcLoc
setLogMessageTimestamp :: MonadIO m => LogMessage -> m LogMessage Source #
An IO action that sets the current UTC time (see enableLogMessageTimestamps
)
in lmTimestamp
.
setLogMessageThreadId :: MonadIO m => LogMessage -> m LogMessage Source #
An IO action appends the the ThreadId
of the calling process (see myThreadId
)
to lmMessage
.
data StructuredDataElement Source #
RFC-5424 defines how structured data can be included in a log message.
SdElement | |
|
Instances
sdElementParameters :: Lens' StructuredDataElement [SdParameter] Source #