packages feed

apiary-logger 0.8.0.0 → 0.9.0.0

raw patch · 3 files changed

+68/−51 lines, 3 filesdep ~apiarydep ~mtlPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: apiary, mtl

API changes (from Hackage documentation)

+ Web.Apiary.Logger: instance (MonadIO m, HasLogger) => MonadLogger (ActionT m)
+ Web.Apiary.Logger: instance (MonadIO m, HasLogger) => MonadLogger (GivenLoggerT m)
+ Web.Apiary.Logger: instance Applicative m => Applicative (GivenLoggerT m)
+ Web.Apiary.Logger: instance Functor m => Functor (GivenLoggerT m)
+ Web.Apiary.Logger: instance Monad m => Monad (GivenLoggerT m)
+ Web.Apiary.Logger: instance MonadBase b m => MonadBase b (GivenLoggerT m)
+ Web.Apiary.Logger: instance MonadBaseControl b m => MonadBaseControl b (GivenLoggerT m)
+ Web.Apiary.Logger: instance MonadIO m => MonadIO (GivenLoggerT m)
+ Web.Apiary.Logger: instance MonadTrans GivenLoggerT
+ Web.Apiary.Logger: instance MonadTransControl GivenLoggerT
- Web.Apiary.Logger: withLogger' :: LogConfig -> ((forall r. (HasLogger => r) -> r) -> IO a) -> IO a
+ Web.Apiary.Logger: withLogger' :: LogConfig -> (((HasLogger => r) -> r) -> IO a) -> IO a

Files

apiary-logger.cabal view
@@ -1,5 +1,5 @@ name:                apiary-logger-version:             0.8.0.0+version:             0.9.0.0 synopsis:            fast-logger support for apiary web framework. description:   example: <https://github.com/philopon/apiary/blob/master/examples/persistent.hs>@@ -20,13 +20,13 @@   exposed-modules:     Web.Apiary.Logger   other-modules:       Web.Apiary.Logger.Internal   build-depends:       base               >=4.6   && <4.8-                     , apiary             >=0.8   && <0.9+                     , apiary             >=0.8   && <0.10                      , fast-logger        >=2.1   && <2.2                      , monad-logger       >=0.3   && <0.4                      , reflection         >=1.4   && <1.5                      , data-default-class >=0.0   && <0.1                      , monad-control      >=0.3   && <0.4-                     , mtl                >=2.1   && <2.2+                     , mtl                >=2.1   && <2.3                      , transformers-base  >=0.4   && <0.5   hs-source-dirs:      src   ghc-options:         -O2 -Wall
src/Web/Apiary/Logger.hs view
@@ -1,6 +1,15 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+ module Web.Apiary.Logger (     -- * configuration-    LogDest(..), LogConfig(..), HasLogger+    I.LogDest(..), I.LogConfig(..), HasLogger     -- * initialize     , withLogger     , withLogger'@@ -13,5 +22,55 @@     , module Data.Default.Class     ) where -import Web.Apiary.Logger.Internal+import qualified Web.Apiary.Logger.Internal as I+import Web.Apiary++import System.Log.FastLogger++import Control.Applicative+import Control.Monad+import Control.Monad.Base+import Control.Monad.Trans+import Control.Monad.Trans.Control+import Control.Monad.Logger+ import Data.Default.Class+import Data.Reflection++type HasLogger = Given I.Logger++withLogger :: I.LogConfig -> (HasLogger => IO a) -> IO a+withLogger c m = I.withLogger c (\l -> give l m)++withLogger' :: I.LogConfig -> (((HasLogger => r) -> r) -> IO a) -> IO a+withLogger' c m = I.withLogger c (\l -> m (give l))++logging :: (MonadIO m, HasLogger) => LogStr -> ActionT m ()+logging = I.logging given++newtype GivenLoggerT m a = GivenLoggerT { runGivenLoggerT :: m a }+    deriving(Functor, Applicative, Monad, MonadIO)++instance MonadBase b m => MonadBase b (GivenLoggerT m) where+    liftBase = GivenLoggerT . liftBase++instance MonadTrans GivenLoggerT where+    lift = GivenLoggerT++instance MonadBaseControl b m => MonadBaseControl b (GivenLoggerT m) where+    newtype StM (GivenLoggerT m) a = StMGivenLogger { unStMGivenLogger :: ComposeSt GivenLoggerT m a }+    liftBaseWith = defaultLiftBaseWith StMGivenLogger+    restoreM     = defaultRestoreM   unStMGivenLogger++instance MonadTransControl GivenLoggerT where+    newtype StT GivenLoggerT a = StGivenLogger { unStGivenLogger :: a }+    liftWith f = GivenLoggerT $ f $ liftM StGivenLogger . runGivenLoggerT+    restoreT   = GivenLoggerT . liftM unStGivenLogger++instance (MonadIO m, HasLogger) => MonadLogger (GivenLoggerT m) where+    monadLoggerLog loc src lv msg = GivenLoggerT . liftIO $+        I.pushLog given (defaultLogStr loc src lv (toLogStr msg))++instance (MonadIO m, HasLogger) => MonadLogger (ActionT m) where+    monadLoggerLog loc src lv msg =+        I.logging given $ defaultLogStr loc src lv (toLogStr msg)
src/Web/Apiary/Logger/Internal.hs view
@@ -10,16 +10,9 @@  module Web.Apiary.Logger.Internal where -import Control.Applicative import Web.Apiary hiding (Default(..)) import System.Log.FastLogger-import Control.Monad-import Control.Monad.Base-import Control.Monad.Trans-import Control.Monad.Logger-import Control.Monad.Trans.Control import Control.Exception-import Data.Reflection import Data.Default.Class  data LogDest@@ -41,8 +34,6 @@ instance Default LogConfig where     def = LogConfig defaultBufSize Stderr -type HasLogger = Given Logger- newLogger :: BufSize -> LogDest -> IO Logger newLogger s (File p) = newFileLoggerSet s p >>= \l ->      return $ Logger (pushLogStr l) (flushLogStr l)@@ -52,45 +43,12 @@     return $ Logger (pushLogStr l) (flushLogStr l) newLogger _ Null = return $ Logger (\_ -> return ()) (return ()) -withLogger :: LogConfig -> (HasLogger => IO a) -> IO a+withLogger :: LogConfig -> (Logger -> IO a) -> IO a withLogger LogConfig{..} m = bracket     (newLogger bufferSize logDest)     closeLog-    (\l -> give l m)--withLogger' :: LogConfig-            -> ((forall r. (HasLogger => r) -> r) -> IO a) -> IO a-withLogger' LogConfig{..} m = bracket-    (newLogger bufferSize logDest)-    closeLog-    (\l -> m (give l))--logging :: (MonadIO m, HasLogger) => LogStr -> ActionT m ()-logging msg = liftIO $ pushLog given msg--newtype GivenLoggerT m a = GivenLoggerT { runGivenLoggerT :: m a }-    deriving(Functor, Applicative, Monad, MonadIO)--instance MonadBase b m => MonadBase b (GivenLoggerT m) where-    liftBase = GivenLoggerT . liftBase--instance MonadTrans GivenLoggerT where-    lift = GivenLoggerT--instance MonadBaseControl b m => MonadBaseControl b (GivenLoggerT m) where-    newtype StM (GivenLoggerT m) a = StMGivenLogger { unStMGivenLogger :: ComposeSt GivenLoggerT m a }-    liftBaseWith = defaultLiftBaseWith StMGivenLogger-    restoreM     = defaultRestoreM   unStMGivenLogger--instance MonadTransControl GivenLoggerT where-    newtype StT GivenLoggerT a = StGivenLogger { unStGivenLogger :: a }-    liftWith f = GivenLoggerT $ f $ liftM StGivenLogger . runGivenLoggerT-    restoreT   = GivenLoggerT . liftM unStGivenLogger+    (\l -> m l) -instance (MonadIO m, HasLogger) => MonadLogger (GivenLoggerT m) where-    monadLoggerLog loc src lv msg = GivenLoggerT . liftIO $-        pushLog given (defaultLogStr loc src lv (toLogStr msg))+logging :: MonadIO m => Logger -> LogStr -> ActionT m ()+logging logger msg = liftIO $ pushLog logger msg -instance (MonadIO m, HasLogger) => MonadLogger (ActionT m) where-    monadLoggerLog loc src lv msg =-        logging $ defaultLogStr loc src lv (toLogStr msg)