packages feed

log-warper 1.4.0 → 1.4.1

raw patch · 3 files changed

+33/−17 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ System.Wlog.CanLog: logEvents :: WithLogger m => [LogEvent] -> m ()

Files

CHANGES.md view
@@ -1,3 +1,8 @@+1.4.1+=====++* Add `logEvents` function to log `[LogEvent]` with proper logName.+ 1.4.0 ===== 
log-warper.cabal view
@@ -1,5 +1,5 @@ name:                log-warper-version:             1.4.0+version:             1.4.1 synopsis:            Flexible, configurable, monadic and pretty logging homepage:            https://github.com/serokell/log-warper license:             MIT
src/System/Wlog/CanLog.hs view
@@ -20,6 +20,7 @@        , PureLogger (..)        , LogEvent   (..)        , dispatchEvents+       , logEvents        , runPureLog        , launchPureLog @@ -36,24 +37,25 @@        , logMessage        ) where -import           Control.Monad.Except      (ExceptT)-import           Control.Monad.Morph       (MFunctor (..))-import qualified Control.Monad.RWS         as RWSLazy-import qualified Control.Monad.RWS.Strict  as RWSStrict-import qualified Control.Monad.State.Lazy  as StateLazy-import qualified Control.Monad.State.Strict  as StateStrict-import           Control.Monad.Trans       (MonadTrans (lift))-import qualified Data.DList                as DL (DList, snoc)-import           Data.SafeCopy             (base, deriveSafeCopySimple) import           Universum -import           System.Wlog.Logger        (logM)-import           System.Wlog.LoggerName    (LoggerName (..))-import           System.Wlog.LoggerNameBox (HasLoggerName (..), LoggerNameBox (..),-                                            usingLoggerName)-import           System.Wlog.Severity      (Severity (..))+import           Control.Monad.Except       (ExceptT)+import           Control.Monad.Morph        (MFunctor (..))+import qualified Control.Monad.RWS          as RWSLazy+import qualified Control.Monad.RWS.Strict   as RWSStrict+import qualified Control.Monad.State.Lazy   as StateLazy+import           Control.Monad.State.Strict (modify')+import           Control.Monad.Trans        (MonadTrans (lift))+import qualified Data.DList                 as DL (DList, snoc)+import           Data.SafeCopy              (base, deriveSafeCopySimple) +import           System.Wlog.Logger         (logM)+import           System.Wlog.LoggerName     (LoggerName (..))+import           System.Wlog.LoggerNameBox  (HasLoggerName (..), LoggerNameBox (..),+                                             usingLoggerName)+import           System.Wlog.Severity       (Severity (..)) + -- | Type alias for constraints 'CanLog' and 'HasLoggerName'. -- We need two different type classes to support more flexible interface -- but in practice we usually use them both.@@ -100,12 +102,12 @@ -- TODO: Should we use some @Data.Tree@-like structure to observe message only -- by chosen logger names? newtype PureLogger m a = PureLogger-    { runPureLogger :: StateStrict.StateT (DL.DList LogEvent) m a+    { runPureLogger :: StateT (DL.DList LogEvent) m a     } deriving (Functor, Applicative, Monad, MonadTrans, MonadState (DL.DList LogEvent),                 MonadThrow, HasLoggerName)  instance Monad m => CanLog (PureLogger m) where-    dispatchMessage leLoggerName leSeverity leMessage = StateStrict.modify' (flip DL.snoc LogEvent{..})+    dispatchMessage leLoggerName leSeverity leMessage = modify' (flip DL.snoc LogEvent{..})  instance MFunctor PureLogger where     hoist f = PureLogger . hoist f . runPureLogger@@ -120,6 +122,15 @@ dispatchEvents = mapM_ dispatchLogEvent   where     dispatchLogEvent (LogEvent name sev t) = dispatchMessage name sev t++-- | Logs all 'LogEvent'`s from given list. Just like+-- 'dispatchEvents' but uses proper logger Name.+logEvents :: WithLogger m => [LogEvent] -> m ()+logEvents events = do+    logName <- getLoggerName+    mapM_ (dispatchLogEvent logName) events+  where+    dispatchLogEvent logName (LogEvent _ sev t) = dispatchMessage logName sev t  -- | Performs actual logging once given action completes. launchPureLog