packages feed

monad-logger 0.3.9 → 0.3.10

raw patch · 3 files changed

+48/−1 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Control.Monad.Logger: askLoggerIO :: MonadLoggerIO m => m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
+ Control.Monad.Logger: class (MonadLogger m, MonadIO m) => MonadLoggerIO m where askLoggerIO = lift askLoggerIO
+ Control.Monad.Logger: instance (MonadLoggerIO m, Error e) => MonadLoggerIO (ErrorT e m)
+ Control.Monad.Logger: instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (RWST r w s m)
+ Control.Monad.Logger: instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (WriterT w m)
+ Control.Monad.Logger: instance MonadIO m => MonadLoggerIO (LoggingT m)
+ Control.Monad.Logger: instance MonadIO m => MonadLoggerIO (NoLoggingT m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ConduitM i o m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ContT r m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ExceptT e m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (IdentityT m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ListT m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (MaybeT m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (Pipe l i o u m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ReaderT r m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (ResourceT m)
+ Control.Monad.Logger: instance MonadLoggerIO m => MonadLoggerIO (StateT s m)

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.3.10++Introduce the `MonadLoggerIO` typeclass.+ ## 0.3.9  Add missing `MonadError NoLoggingT` instance #49
Control/Monad/Logger.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DefaultSignatures #-} #if WITH_TEMPLATE_HASKELL {-# LANGUAGE TemplateHaskell #-} #endif@@ -24,6 +25,7 @@ module Control.Monad.Logger     ( -- * MonadLogger       MonadLogger(..)+    , MonadLoggerIO (..)     , LogLevel(..)     , LogSource     -- * Helper transformer@@ -168,10 +170,26 @@  #endif +-- | A @Monad@ which has the ability to log messages in some manner. class Monad m => MonadLogger m where     monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> m () +-- | An extension of @MonadLogger@ for the common case where the logging action+-- is a simple @IO@ action. The advantage of using this typeclass is that the+-- logging function itself can be extracted as a first-class value, which can+-- make it easier to manipulate monad transfomrer stacks, as an example.+--+-- Since 0.3.10+class (MonadLogger m, MonadIO m) => MonadLoggerIO m where+    -- | Request the logging function itself.+    --+    -- Since 0.3.10+    askLoggerIO :: m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())+    default askLoggerIO :: (Trans.MonadTrans t, MonadLogger (t m), MonadIO (t m))+                        => t m (Loc -> LogSource -> LogLevel -> LogStr -> IO ())+    askLoggerIO = Trans.lift askLoggerIO + {- instance MonadLogger IO          where monadLoggerLog _ _ _ = return () instance MonadLogger Identity    where monadLoggerLog _ _ _ = return ()@@ -202,6 +220,27 @@ instance (MonadLogger m, Monoid w) => MonadLogger (Strict.RWST r w s m) where DEF #undef DEF +instance MonadLoggerIO m => MonadLoggerIO (IdentityT m)+instance MonadLoggerIO m => MonadLoggerIO (ListT m)+instance MonadLoggerIO m => MonadLoggerIO (MaybeT m)+instance (MonadLoggerIO m, Error e) => MonadLoggerIO (ErrorT e m)++#if MIN_VERSION_transformers(0,4,0)+instance MonadLoggerIO m => MonadLoggerIO (ExceptT e m)+#endif++instance MonadLoggerIO m => MonadLoggerIO (ReaderT r m)+instance MonadLoggerIO m => MonadLoggerIO (ContT r m)+instance MonadLoggerIO m => MonadLoggerIO (StateT s m)+instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (WriterT w m)+instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (RWST r w s m)+instance MonadLoggerIO m => MonadLoggerIO (ResourceT m)+instance MonadLoggerIO m => MonadLoggerIO (Pipe l i o u m)+instance MonadLoggerIO m => MonadLoggerIO (ConduitM i o m)+instance MonadLoggerIO m => MonadLoggerIO (Strict.StateT s m)+instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (Strict.WriterT w m)+instance (MonadLoggerIO m, Monoid w) => MonadLoggerIO (Strict.RWST r w s m)+ #if WITH_TEMPLATE_HASKELL logTH :: LogLevel -> Q Exp logTH level =@@ -335,6 +374,8 @@  instance Monad m => MonadLogger (NoLoggingT m) where     monadLoggerLog _ _ _ _ = return ()+instance MonadIO m => MonadLoggerIO (NoLoggingT m) where+    askLoggerIO = return $ \_ _ _ _ -> return ()  -- | Monad transformer that adds a new logging function. --@@ -402,6 +443,8 @@  instance MonadIO m => MonadLogger (LoggingT m) where     monadLoggerLog a b c d = LoggingT $ \f -> liftIO $ f a b c (toLogStr d)+instance MonadIO m => MonadLoggerIO (LoggingT m) where+    askLoggerIO = LoggingT return  defaultOutput :: Handle               -> Loc
monad-logger.cabal view
@@ -1,5 +1,5 @@ name:                monad-logger-version:             0.3.9+version:             0.3.10 synopsis:            A class of monads which can log messages. description:         This package uses template-haskell for determining source code locations of messages. homepage:            https://github.com/kazu-yamamoto/logger