1-- | Log functions using CallStack support in place of Template Haskell
2--
3-- @since 0.3.19
4module Control.Monad.Logger.CallStack (
5    module Log
6  , logDebug
7  , logInfo
8  , logWarn
9  , logError
10  , logOther
11  , logDebugSH
12  , logInfoSH
13  , logWarnSH
14  , logErrorSH
15  , logOtherSH
16  ) where
17
18import           Control.Monad.Logger as Log hiding (logDebug, logDebugSH,
19                                              logError, logErrorSH, logInfo,
20                                              logInfoSH, logOther, logOtherSH,
21                                              logWarn, logWarnSH)
22import           Data.Text            (Text)
23import qualified Data.Text            as Text
24import           GHC.Stack
25
26-- | Logs a message with the location provided by
27-- an implicit 'CallStack'.
28--
29-- @since 0.3.19
30logDebug :: (HasCallStack, Log.MonadLogger m) => Text -> m ()
31logDebug = Log.logDebugCS callStack
32
33-- | See 'logDebug'
34--
35-- @since 0.3.19
36logInfo :: (HasCallStack, Log.MonadLogger m) => Text -> m ()
37logInfo = Log.logInfoCS callStack
38
39-- | See 'logDebug'
40--
41-- @since 0.3.19
42logWarn :: (HasCallStack, Log.MonadLogger m) => Text -> m ()
43logWarn = Log.logWarnCS callStack
44
45-- | See 'logDebug'
46--
47-- @since 0.3.19
48logError :: (HasCallStack, Log.MonadLogger m) => Text -> m ()
49logError = Log.logErrorCS callStack
50
51-- | See 'logDebug'
52--
53-- @since 0.3.25
54logOther :: (HasCallStack, Log.MonadLogger m) => Log.LogLevel -> Text -> m ()
55logOther = Log.logOtherCS callStack
56
57-- | Logs a showable value with the location provided by
58-- an implicit 'CallStack'.
59--
60-- @since 0.3.25
61logDebugSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()
62logDebugSH = Log.logDebugCS callStack . Text.pack . show
63
64-- | See 'logDebugSH'
65--
66-- @since 0.3.25
67logInfoSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()
68logInfoSH = Log.logInfoCS callStack . Text.pack . show
69
70-- | See 'logDebugSH'
71--
72-- @since 0.3.25
73logWarnSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()
74logWarnSH = Log.logWarnCS callStack . Text.pack . show
75
76-- | See 'logDebugSH'
77--
78-- @since 0.3.25
79logErrorSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()
80logErrorSH = Log.logErrorCS callStack . Text.pack . show
81
82-- | See 'logDebugSH'
83--
84-- @since 0.3.25
85logOtherSH :: (HasCallStack, Log.MonadLogger m, Show a) => Log.LogLevel -> a -> m ()
86logOtherSH lvl = Log.logOtherCS callStack lvl . Text.pack . show
87