extensible-effects-concurrent-0.21.1: Message passing concurrency as extensible-effect

Safe HaskellNone
LanguageHaskell2010

Control.Eff.Log.Message

Contents

Description

An RFC 5434 inspired log message and convenience functions for logging them.

Synopsis

Log Message Data Type

data LogMessage Source #

A message data type inspired by the RFC-5424 Syslog Protocol

Instances
Eq LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Show LogMessage Source #

This instance is only supposed to be used for unit tests and debugging.

Instance details

Defined in Control.Eff.Log.Message

IsString LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Generic LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Associated Types

type Rep LogMessage :: Type -> Type #

Default LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

def :: LogMessage #

NFData LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

rnf :: LogMessage -> () #

ToLogMessage LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Handle Logs e a (LogPredicate -> k) Source # 
Instance details

Defined in Control.Eff.Log.Handler

Methods

handle :: (Eff e a -> LogPredicate -> k) -> Arrs e v a -> Logs v -> LogPredicate -> k #

handle_relay :: (e ~ (Logs ': r'), Relay (LogPredicate -> k) r') => (a -> LogPredicate -> k) -> (Eff e a -> LogPredicate -> k) -> Eff e a -> LogPredicate -> k #

respond_relay :: (a -> LogPredicate -> k) -> (Eff e a -> LogPredicate -> k) -> Eff e a -> LogPredicate -> k #

type Rep LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

Field Accessors

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

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

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

Type Class for Conversion to LogMessage

class ToLogMessage a where Source #

Things that can become a LogMessage

Methods

toLogMessage :: a -> LogMessage Source #

Convert the value to a LogMessage

IO Based Constructor

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.

Instances
Eq StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

Ord StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

Show StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

Generic StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

Associated Types

type Rep StructuredDataElement :: Type -> Type #

NFData StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

rnf :: StructuredDataElement -> () #

type Rep StructuredDataElement Source # 
Instance details

Defined in Control.Eff.Log.Message

type Rep StructuredDataElement = D1 (MetaData "StructuredDataElement" "Control.Eff.Log.Message" "extensible-effects-concurrent-0.21.1-9Yk6EWYMSLLHGr6bV3y5GS" False) (C1 (MetaCons "SdElement" PrefixI True) (S1 (MetaSel (Just "_sdElementId") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text) :*: S1 (MetaSel (Just "_sdElementParameters") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [SdParameter])))

data SdParameter Source #

Component of an RFC-5424 StructuredDataElement

Constructors

MkSdParameter !Text !Text 
Instances
Eq SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

Ord SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

Show SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

Generic SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

Associated Types

type Rep SdParameter :: Type -> Type #

NFData SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

rnf :: SdParameter -> () #

type Rep SdParameter Source # 
Instance details

Defined in Control.Eff.Log.Message

type Rep SdParameter = D1 (MetaData "SdParameter" "Control.Eff.Log.Message" "extensible-effects-concurrent-0.21.1-9Yk6EWYMSLLHGr6bV3y5GS" False) (C1 (MetaCons "MkSdParameter" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text)))

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.

RFC 5424 Severity

data Severity Source #

An rfc 5424 severity

Instances
Eq Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Ord Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Show Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Generic Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Associated Types

type Rep Severity :: Type -> Type #

Methods

from :: Severity -> Rep Severity x #

to :: Rep Severity x -> Severity #

Default Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

def :: Severity #

NFData Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

rnf :: Severity -> () #

type Rep Severity Source # 
Instance details

Defined in Control.Eff.Log.Message

type Rep Severity = D1 (MetaData "Severity" "Control.Eff.Log.Message" "extensible-effects-concurrent-0.21.1-9Yk6EWYMSLLHGr6bV3y5GS" True) (C1 (MetaCons "Severity" PrefixI True) (S1 (MetaSel (Just "fromSeverity") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

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

newtype Facility Source #

An rfc 5424 facility

Constructors

Facility 

Fields

Instances
Eq Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Ord Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Show Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Generic Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Associated Types

type Rep Facility :: Type -> Type #

Methods

from :: Facility -> Rep Facility x #

to :: Rep Facility x -> Facility #

Default Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

def :: Facility #

NFData Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

Methods

rnf :: Facility -> () #

type Rep Facility Source # 
Instance details

Defined in Control.Eff.Log.Message

type Rep Facility = D1 (MetaData "Facility" "Control.Eff.Log.Message" "extensible-effects-concurrent-0.21.1-9Yk6EWYMSLLHGr6bV3y5GS" True) (C1 (MetaCons "Facility" PrefixI True) (S1 (MetaSel (Just "fromFacility") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

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.

local0 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local0. See lmFacility.

local1 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local1. See lmFacility.

local2 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local2. See lmFacility.

local3 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local3. See lmFacility.

local4 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local4. See lmFacility.

local5 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local5. See lmFacility.

local6 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local6. See lmFacility.

local7 :: Facility Source #

Smart constructor for the RFC-5424 LogMessage facility local7. See lmFacility.