polysemy-log-0.1.0.0: lib/Polysemy/Log/Data/Log.hs
-- |Description: Internal
module Polysemy.Log.Data.Log where
import Polysemy.Internal (send)
import Polysemy.Log.Data.Severity (Severity, Severity(Debug, Trace, Info, Warn, Error, Crit))
import Polysemy.Log.Data.LogMessage (LogMessage(LogMessage))
-- |The default high-level effect for simple text messages.
-- To be used with the severity constructors:
--
-- @
-- import qualified Polysemy.Log as Log
--
-- prog = do
-- Log.debug "debugging…"
-- Log.warn "warning!"
-- @
--
-- Interpreters should preprocess and relay the message to 'Polysemy.Log.DataLog'.
data Log :: Effect where
-- |Schedule a message to be logged.
Log :: HasCallStack => LogMessage -> Log m ()
-- |Log a message with the given severity.
-- Basic 'Sem' constructor.
log ::
HasCallStack =>
Member Log r =>
Severity ->
Text ->
Sem r ()
log severity message =
withFrozenCallStack $
send (Log (LogMessage severity message))
{-# INLINE log #-}
-- |Log a message with the 'Trace' severity.
trace ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
trace =
withFrozenCallStack $
log Trace
{-# INLINE trace #-}
-- |Log a message with the 'Debug' severity.
debug ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
debug =
withFrozenCallStack $
log Debug
{-# INLINE debug #-}
-- |Log a message with the 'Info' severity.
info ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
info =
withFrozenCallStack $
log Info
{-# INLINE info #-}
-- |Log a message with the 'Warn' severity.
warn ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
warn =
withFrozenCallStack $
log Warn
{-# INLINE warn #-}
-- |Log a message with the 'Error' severity.
error ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
error =
withFrozenCallStack $
log Error
{-# INLINE error #-}
-- |Log a message with the 'Crit' severity.
crit ::
HasCallStack =>
Member Log r =>
Text ->
Sem r ()
crit =
withFrozenCallStack $
log Crit
{-# INLINE crit #-}