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

Safe HaskellNone
LanguageHaskell2010

Control.Eff.Log.Message

Description

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

Synopsis

Documentation

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

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 -> () #

type Rep LogMessage Source # 
Instance details

Defined in Control.Eff.Log.Message

type Rep LogMessage = D1 (MetaData "LogMessage" "Control.Eff.Log.Message" "extensible-effects-concurrent-0.14.0-KhFRpYG1b4SDYIjm4HuI8R" False) (C1 (MetaCons "LogMessage" PrefixI True) (((S1 (MetaSel (Just "_lmFacility") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Facility) :*: (S1 (MetaSel (Just "_lmSeverity") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Severity) :*: S1 (MetaSel (Just "_lmTimestamp") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe UTCTime)))) :*: (S1 (MetaSel (Just "_lmHostname") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)) :*: (S1 (MetaSel (Just "_lmAppname") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)) :*: S1 (MetaSel (Just "_lmProcessId") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String))))) :*: ((S1 (MetaSel (Just "_lmMessageId") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)) :*: (S1 (MetaSel (Just "_lmStructuredData") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [StructuredDataElement]) :*: S1 (MetaSel (Just "_lmThreadId") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe ThreadId)))) :*: (S1 (MetaSel (Just "_lmSrcLoc") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe SrcLoc)) :*: (S1 (MetaSel (Just "_lmMessage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_lmDistance") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))))

type HasLogging writerM effect = HasLogWriter LogMessage writerM effect Source #

A convenient alias for the constraints that enable logging of LogMessages in the monad, which is Lifted 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.

ioLogMessageWriter :: HasCallStack => LogWriter String IO -> LogWriter LogMessage IO Source #

Set a timestamp (if not set), the thread id (if not set) using IO actions then write the log message using the IO and String based LogWriter.

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.

logAlert :: (HasCallStack, Member (Logs LogMessage) e) => String -> Eff e () Source #

Log a message with alertSeverity.

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.14.0-KhFRpYG1b4SDYIjm4HuI8R" True) (C1 (MetaCons "Severity" PrefixI True) (S1 (MetaSel (Just "fromSeverity") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

data Facility Source #

An rfc 5424 facility

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.14.0-KhFRpYG1b4SDYIjm4HuI8R" True) (C1 (MetaCons "Facility" PrefixI True) (S1 (MetaSel (Just "fromFacility") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

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.

Constructors

SdElement 

Fields

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