monad-logger 0.3.18 → 0.3.19
raw patch · 4 files changed
+166/−2 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Control.Monad.Logger: logDebugCS :: MonadLogger m => CallStack -> Text -> m ()
+ Control.Monad.Logger: logErrorCS :: MonadLogger m => CallStack -> Text -> m ()
+ Control.Monad.Logger: logInfoCS :: MonadLogger m => CallStack -> Text -> m ()
+ Control.Monad.Logger: logOtherCS :: MonadLogger m => CallStack -> LogLevel -> Text -> m ()
+ Control.Monad.Logger: logWarnCS :: MonadLogger m => CallStack -> Text -> m ()
+ Control.Monad.Logger.CallStack: logDebug :: (HasCallStack, MonadLogger m) => Text -> m ()
+ Control.Monad.Logger.CallStack: logError :: (HasCallStack, MonadLogger m) => Text -> m ()
+ Control.Monad.Logger.CallStack: logInfo :: (HasCallStack, MonadLogger m) => Text -> m ()
+ Control.Monad.Logger.CallStack: logWarn :: (HasCallStack, MonadLogger m) => Text -> m ()
- Control.Monad.Logger: askLoggerIO :: MonadLoggerIO m => m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
+ Control.Monad.Logger: askLoggerIO :: (MonadLoggerIO m, MonadTrans t, MonadLogger (t m), MonadIO (t m)) => t m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
- Control.Monad.Logger: monadLoggerLog :: (MonadLogger m, ToLogStr msg) => Loc -> LogSource -> LogLevel -> msg -> m ()
+ Control.Monad.Logger: monadLoggerLog :: (MonadLogger m, MonadTrans t, MonadLogger (t m), ToLogStr msg) => Loc -> LogSource -> LogLevel -> msg -> t m ()
- Control.Monad.Logger: toLogStr :: ToLogStr msg => msg -> LogStr
+ Control.Monad.Logger: toLogStr :: msg -> LogStr
Files
- ChangeLog.md +4/−0
- Control/Monad/Logger.hs +77/−1
- Control/Monad/Logger/CallStack.hs +78/−0
- monad-logger.cabal +7/−1
ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.3.19++* Add CallStack-based functions and `Control.Monad.Logger.CallStack` module+ ## 0.3.18 * Added logTHShow and logDebugSH, logInfoSH, etc. Accepts an argument of `Show a => a` instead of just `Text`.
Control/Monad/Logger.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DefaultSignatures #-}+#if WITH_CALLSTACK+{-# LANGUAGE ImplicitParams #-}+#endif #if WITH_TEMPLATE_HASKELL {-# LANGUAGE TemplateHaskell #-} #endif@@ -75,7 +78,14 @@ , logWarnNS , logErrorNS , logOtherNS-+#if WITH_CALLSTACK+ -- * Callstack logging+ , logDebugCS+ , logInfoCS+ , logWarnCS+ , logErrorCS+ , logOtherCS+#endif -- * utilities for defining your own loggers , defaultLogStr , Loc (..)@@ -142,6 +152,10 @@ import Control.Monad.State.Class ( MonadState (..) ) import Control.Monad.Writer.Class ( MonadWriter (..) ) +#if WITH_CALLSTACK+import GHC.Stack as GHC+#endif+ import Prelude hiding (catch) #if MIN_VERSION_fast_logger(2, 1, 0)@@ -758,3 +772,65 @@ logOtherNS :: MonadLogger m => Text -> LogLevel -> Text -> m () logOtherNS = logWithoutLoc++#if WITH_CALLSTACK+-- Callstack based logging++mkLoggerLoc :: GHC.SrcLoc -> Loc+mkLoggerLoc loc =+ Loc { loc_filename = GHC.srcLocFile loc+ , loc_package = GHC.srcLocPackage loc+ , loc_module = GHC.srcLocModule loc+ , loc_start = ( GHC.srcLocStartLine loc+ , GHC.srcLocStartCol loc)+ , loc_end = ( GHC.srcLocEndLine loc+ , GHC.srcLocEndCol loc)+ }++locFromCS :: GHC.CallStack -> Loc+locFromCS cs = case getCallStack cs of+ ((_, loc):_) -> mkLoggerLoc loc+ _ -> defaultLoc++logCS :: (MonadLogger m, ToLogStr msg)+ => GHC.CallStack+ -> LogSource+ -> LogLevel+ -> msg+ -> m ()+logCS cs src lvl msg =+ monadLoggerLog (locFromCS cs) src lvl msg++-- | Logs a message with location given by 'CallStack'.+-- See 'Control.Monad.Logger.CallStack' for more convenient+-- functions for 'CallStack' based logging.+--+-- @since 0.3.19+logDebugCS :: MonadLogger m => GHC.CallStack -> Text -> m ()+logDebugCS cs msg = logCS cs "" LevelDebug msg++-- | See 'logDebugCS'+--+-- @since 0.3.19+logInfoCS :: MonadLogger m => GHC.CallStack -> Text -> m ()+logInfoCS cs msg = logCS cs "" LevelInfo msg++-- | See 'logDebugCS'+--+-- @since 0.3.19+logWarnCS :: MonadLogger m => GHC.CallStack -> Text -> m ()+logWarnCS cs msg = logCS cs "" LevelWarn msg++-- | See 'logDebugCS'+--+-- @since 0.3.19+logErrorCS :: MonadLogger m => GHC.CallStack -> Text -> m ()+logErrorCS cs msg = logCS cs "" LevelError msg++-- | See 'logDebugCS'+--+-- @since 0.3.19+logOtherCS :: MonadLogger m => GHC.CallStack -> LogLevel -> Text -> m ()+logOtherCS cs lvl msg = logCS cs "" lvl msg++#endif
+ Control/Monad/Logger/CallStack.hs view
@@ -0,0 +1,78 @@+-- | Log functions using CallStack support in place of Template Haskell+--+-- @since 0.3.19+module Control.Monad.Logger.CallStack (+ module Log+ , logDebug+ , logInfo+ , logWarn+ , logError+ ) where++import Control.Monad.Logger as Log hiding (logDebug, logError,+ logInfo, logOther, logWarn)+import Data.Text (Text)+import qualified Data.Text as Text+import GHC.Stack++-- | Logs a message with the location provided by+-- an implicit 'CallStack'.+--+-- @since 0.3.19+logDebug :: (HasCallStack, Log.MonadLogger m) => Text -> m ()+logDebug = Log.logDebugCS callStack++-- | See 'logDebug'+--+-- @since 0.3.19+logInfo :: (HasCallStack, Log.MonadLogger m) => Text -> m ()+logInfo = Log.logInfoCS callStack++-- | See 'logDebug'+--+-- @since 0.3.19+logWarn :: (HasCallStack, Log.MonadLogger m) => Text -> m ()+logWarn = Log.logWarnCS callStack++-- | See 'logDebug'+--+-- @since 0.3.19+logError :: (HasCallStack, Log.MonadLogger m) => Text -> m ()+logError = Log.logErrorCS callStack++-- | See 'logDebug'+--+-- @since 0.3.19+logOther :: (HasCallStack, Log.MonadLogger m) => Log.LogLevel -> Text -> m ()+logOther = Log.logOtherCS callStack++-- | Logs a showable value with the location provided by+-- an implicit 'CallStack'.+--+-- @since 0.3.19+logDebugSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()+logDebugSH = Log.logDebugCS callStack . Text.pack . show++-- | See 'logDebugSH'+--+-- @since 0.3.19+logInfoSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()+logInfoSH = Log.logInfoCS callStack . Text.pack . show++-- | See 'logDebugSH'+--+-- @since 0.3.19+logWarnSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()+logWarnSH = Log.logWarnCS callStack . Text.pack . show++-- | See 'logDebugSH'+--+-- @since 0.3.19+logErrorSH :: (HasCallStack, Log.MonadLogger m, Show a) => a -> m ()+logErrorSH = Log.logErrorCS callStack . Text.pack . show++-- | See 'logDebugSH'+--+-- @since 0.3.19+logOtherSH :: (HasCallStack, Log.MonadLogger m, Show a) => Log.LogLevel -> a -> m ()+logOtherSH lvl = Log.logOtherCS callStack lvl . Text.pack . show
monad-logger.cabal view
@@ -1,5 +1,5 @@ name: monad-logger-version: 0.3.18+version: 0.3.19 synopsis: A class of monads which can log messages. description: Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/monad-logger>. homepage: https://github.com/kazu-yamamoto/logger@@ -25,6 +25,7 @@ library exposed-modules: Control.Monad.Logger+ build-depends: base >= 4 && < 5 , transformers , transformers-compat >= 0.3@@ -43,6 +44,11 @@ , bytestring , blaze-builder , exceptions++ if impl(ghc >= 8.0.1)+ cpp-options: -DWITH_CALLSTACK+ exposed-modules: Control.Monad.Logger.CallStack+ if flag(template_haskell) build-depends: template-haskell