| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Eff.Log.Message
Contents
Description
An RFC 5434 inspired log message and convenience functions for logging them.
Synopsis
- data LogMessage = MkLogMessage {}
- lmFacility :: Functor f => (Facility -> f Facility) -> LogMessage -> f LogMessage
- lmSeverity :: Functor f => (Severity -> f Severity) -> LogMessage -> f LogMessage
- lmTimestamp :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> LogMessage -> f LogMessage
- lmHostname :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
- lmAppName :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
- lmProcessId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
- lmMessageId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
- lmStructuredData :: Functor f => ([StructuredDataElement] -> f [StructuredDataElement]) -> LogMessage -> f LogMessage
- lmSrcLoc :: Functor f => (Maybe SrcLoc -> f (Maybe SrcLoc)) -> LogMessage -> f LogMessage
- lmThreadId :: Functor f => (Maybe ThreadId -> f (Maybe ThreadId)) -> LogMessage -> f LogMessage
- lmMessage :: Functor f => (Text -> f Text) -> LogMessage -> f LogMessage
- setCallStack :: CallStack -> LogMessage -> LogMessage
- prefixLogMessagesWith :: Text -> LogMessage -> LogMessage
- setLogMessageTimestamp :: LogMessage -> IO LogMessage
- setLogMessageThreadId :: LogMessage -> IO LogMessage
- setLogMessageHostname :: LogMessage -> IO LogMessage
- errorMessage :: HasCallStack => Text -> LogMessage
- infoMessage :: HasCallStack => Text -> LogMessage
- debugMessage :: HasCallStack => Text -> LogMessage
- class ToLogMessage a where
- toLogMessage :: a -> LogMessage
- errorMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
- infoMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
- debugMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
- type LogPredicate = LogMessage -> Bool
- allLogMessages :: LogPredicate
- noLogMessages :: LogPredicate
- lmSeverityIs :: Severity -> LogPredicate
- lmSeverityIsAtLeast :: Severity -> LogPredicate
- lmMessageStartsWith :: Text -> LogPredicate
- discriminateByAppName :: Text -> LogPredicate -> LogPredicate -> LogPredicate
- data StructuredDataElement = SdElement {
- _sdElementId :: !Text
- _sdElementParameters :: ![SdParameter]
- data SdParameter = MkSdParameter !Text !Text
- sdElementId :: Functor f => (Text -> f Text) -> StructuredDataElement -> f StructuredDataElement
- sdElementParameters :: Functor f => ([SdParameter] -> f [SdParameter]) -> StructuredDataElement -> f StructuredDataElement
- data Severity
- emergencySeverity :: Severity
- alertSeverity :: Severity
- criticalSeverity :: Severity
- errorSeverity :: Severity
- warningSeverity :: Severity
- noticeSeverity :: Severity
- informationalSeverity :: Severity
- debugSeverity :: Severity
- newtype Facility = Facility {
- fromFacility :: Int
- 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
Log Message Data Type
data LogMessage Source #
A message data type inspired by the RFC-5424 Syslog Protocol
Constructors
| MkLogMessage | |
Fields
| |
Instances
Field Accessors
lmFacility :: Functor f => (Facility -> f Facility) -> LogMessage -> f LogMessage Source #
A lens for the Facility of a LogMessage
lmSeverity :: Functor f => (Severity -> f Severity) -> LogMessage -> f LogMessage Source #
A lens for the Severity of a LogMessage
lmTimestamp :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> LogMessage -> f LogMessage Source #
A lens for the UTC time of a LogMessage
The function setLogMessageTimestamp can be used to set the field.
lmHostname :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage Source #
A lens for the hostname of a LogMessage
The function setLogMessageHostname can be used to set the field.
lmAppName :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage Source #
A lens for the RFC 5424 application name of a LogMessage
One useful pattern for using this field, is to implement log filters that allow info and debug message from the application itself while only allowing warning and error messages from third party libraries:
debugLogsForAppName myAppName lm = view lmAppName lm == Just myAppName || lmSeverityIsAtLeast warningSeverity lm
This concept is also implemented in discriminateByAppName.
lmProcessId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage Source #
A lens for a user defined of process id of a LogMessage
lmMessageId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage Source #
A lens for a user defined message id of a LogMessage
lmStructuredData :: Functor f => ([StructuredDataElement] -> f [StructuredDataElement]) -> LogMessage -> f LogMessage Source #
A lens for the StructuredDataElement of a LogMessage
lmSrcLoc :: Functor f => (Maybe SrcLoc -> f (Maybe SrcLoc)) -> LogMessage -> f LogMessage Source #
A lens for the SrcLoc of a LogMessage
lmThreadId :: Functor f => (Maybe ThreadId -> f (Maybe ThreadId)) -> LogMessage -> f LogMessage Source #
A lens for the ThreadId of a LogMessage
The function setLogMessageThreadId can be used to set the field.
lmMessage :: Functor f => (Text -> f Text) -> LogMessage -> f LogMessage Source #
A lens for the user defined textual message of a LogMessage
IO Based LogMessage Modification
setCallStack :: CallStack -> LogMessage -> LogMessage Source #
Put the source location of the given callstack in lmSrcLoc
prefixLogMessagesWith :: Text -> LogMessage -> LogMessage Source #
Prefix the lmMessage.
setLogMessageTimestamp :: LogMessage -> IO LogMessage Source #
An IO action that sets the current UTC time in lmTimestamp.
setLogMessageThreadId :: LogMessage -> IO LogMessage Source #
An IO action appends the the ThreadId of the calling process (see myThreadId)
to lmMessage.
setLogMessageHostname :: LogMessage -> IO LogMessage Source #
An IO action that sets the current hosts fully qualified hostname in lmHostname.
Log Message Construction
errorMessage :: HasCallStack => Text -> LogMessage Source #
Construct a LogMessage with errorSeverity
infoMessage :: HasCallStack => Text -> LogMessage Source #
Construct a LogMessage with informationalSeverity
debugMessage :: HasCallStack => Text -> LogMessage Source #
Construct a LogMessage with debugSeverity
Type Class for Conversion to LogMessage
class ToLogMessage a where Source #
Things that can become a LogMessage
Instances
| ToLogMessage Text Source # | |
Defined in Control.Eff.Log.Message Methods toLogMessage :: Text -> LogMessage Source # | |
| ToLogMessage LogMessage Source # | |
Defined in Control.Eff.Log.Message Methods toLogMessage :: LogMessage -> LogMessage Source # | |
IO Based Constructor
errorMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage Source #
Construct a LogMessage with errorSeverity
infoMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage Source #
Construct a LogMessage with informationalSeverity
debugMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage Source #
Construct a LogMessage with debugSeverity
LogMessage Predicates
Log Message Predicates
These are the predefined LogPredicates:
To find out how to use these predicates, goto Control.Eff.Log
type LogPredicate = LogMessage -> Bool Source #
The filter predicate for message that shall be logged.
See Control.Eff.Log
allLogMessages :: LogPredicate Source #
All messages.
See Control.Eff.Log.Message for more predicates.
noLogMessages :: LogPredicate Source #
No messages.
See Control.Eff.Log.Message for more predicates.
lmSeverityIs :: Severity -> LogPredicate Source #
Match LogMessages that have exactly the given severity.
See lmSeverityIsAtLeast.
See Control.Eff.Log.Message for more predicates.
lmSeverityIsAtLeast :: Severity -> LogPredicate Source #
Match LogMessages that have the given severity or worse.
See lmSeverityIs.
See Control.Eff.Log.Message for more predicates.
lmMessageStartsWith :: Text -> LogPredicate Source #
Match LogMessages whose lmMessage starts with the given string.
See Control.Eff.Log.Message for more predicates.
discriminateByAppName :: Text -> LogPredicate -> LogPredicate -> LogPredicate Source #
Apply a LogPredicate based on the lmAppName and delegate
to one of two LogPredicates.
One useful application for this is to allow info and debug message from one application, e.g. the current application itself, while at the same time allowing only warning and error messages from third party libraries.
See Control.Eff.Log.Message for more predicates.
RFC-5424 Structured Data
data StructuredDataElement Source #
RFC-5424 defines how structured data can be included in a log message.
Constructors
| SdElement | |
Fields
| |
Instances
data SdParameter Source #
Component of an RFC-5424 StructuredDataElement
Constructors
| MkSdParameter !Text !Text |
Instances
sdElementId :: Functor f => (Text -> f Text) -> StructuredDataElement -> f StructuredDataElement Source #
A lens for the key or ID of a group of RFC 5424 key-value pairs.
sdElementParameters :: Functor f => ([SdParameter] -> f [SdParameter]) -> StructuredDataElement -> f StructuredDataElement Source #
A lens for SdParameters
RFC 5424 Severity
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 | |
emergencySeverity :: Severity Source #
Smart constructor for the RFC-5424 emergency LogMessage Severity.
This corresponds to the severity value 0.
See lmSeverity.
alertSeverity :: Severity Source #
Smart constructor for the RFC-5424 alert LogMessage Severity.
This corresponds to the severity value 1.
See lmSeverity.
criticalSeverity :: Severity Source #
Smart constructor for the RFC-5424 critical LogMessage Severity.
This corresponds to the severity value 2.
See lmSeverity.
errorSeverity :: Severity Source #
Smart constructor for the RFC-5424 error LogMessage Severity.
This corresponds to the severity value 3.
See lmSeverity.
warningSeverity :: Severity Source #
Smart constructor for the RFC-5424 warning LogMessage Severity.
This corresponds to the severity value 4.
See lmSeverity.
noticeSeverity :: Severity Source #
Smart constructor for the RFC-5424 notice LogMessage Severity.
This corresponds to the severity value 5.
See lmSeverity.
informationalSeverity :: Severity Source #
Smart constructor for the RFC-5424 informational LogMessage Severity.
This corresponds to the severity value 6.
See lmSeverity.
debugSeverity :: Severity Source #
Smart constructor for the RFC-5424 debug LogMessage Severity.
This corresponds to the severity value 7.
See lmSeverity.
RFC 5424 Facility
An rfc 5424 facility
Constructors
| Facility | |
Fields
| |
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 | |
Facility Constructors
kernelMessages :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility kernelMessages.
See lmFacility.
userLevelMessages :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility userLevelMessages.
See lmFacility.
mailSystem :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility mailSystem.
See lmFacility.
systemDaemons :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility systemDaemons.
See lmFacility.
securityAuthorizationMessages4 :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility securityAuthorizationMessages4.
See lmFacility.
linePrinterSubsystem :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility linePrinterSubsystem.
See lmFacility.
networkNewsSubsystem :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility networkNewsSubsystem.
See lmFacility.
uucpSubsystem :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility uucpSubsystem.
See lmFacility.
clockDaemon :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility clockDaemon.
See lmFacility.
securityAuthorizationMessages10 :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility securityAuthorizationMessages10.
See lmFacility.
ftpDaemon :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility ftpDaemon.
See lmFacility.
ntpSubsystem :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility ntpSubsystem.
See lmFacility.
logAuditFacility :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility logAuditFacility.
See lmFacility.
logAlertFacility :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility logAlertFacility.
See lmFacility.
clockDaemon2 :: Facility Source #
Smart constructor for the RFC-5424 LogMessage facility clockDaemon2.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local0.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local1.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local2.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local3.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local4.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local5.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local6.
See lmFacility.
Smart constructor for the RFC-5424 LogMessage facility local7.
See lmFacility.