logging-effect 1.3.0 → 1.3.1
raw patch · 4 files changed
+21/−6 lines, 4 filesdep +unliftio-coredep −wl-pprint-textdep ~prettyprinterPVP ok
version bump matches the API change (PVP)
Dependencies added: unliftio-core
Dependencies removed: wl-pprint-text
Dependency ranges changed: prettyprinter
API changes (from Hackage documentation)
+ Control.Monad.Log: instance Control.Monad.IO.Unlift.MonadUnliftIO m => Control.Monad.IO.Unlift.MonadUnliftIO (Control.Monad.Log.LoggingT msg m)
Files
- Benchmark.hs +5/−4
- Changelog.md +6/−0
- logging-effect.cabal +3/−2
- src/Control/Monad/Log.hs +7/−0
Benchmark.hs view
@@ -6,11 +6,12 @@ import Criterion.Main import qualified Control.Monad.Log as LoggingEffect import qualified Control.Monad.Logger as MonadLogger-import qualified Data.ByteString as BS+import qualified Data.ByteString.Char8 as BS import System.Log.FastLogger (fromLogStr, toLogStr) import Data.Monoid ((<>)) import qualified Data.Text.IO as T-import qualified Text.PrettyPrint.Leijen.Text as PP+import qualified Data.Text.Prettyprint.Doc as PP+import qualified Data.Text.Prettyprint.Doc.Render.Text as PP import System.IO (stdout) import Control.Concurrent.Async.Lifted import Data.Foldable (sequenceA_)@@ -33,9 +34,9 @@ , bgroup "discard-logs" [ bench "logging-effect" (nfIO (LoggingEffect.discardLogging loggingEffectLog)) , bench "monad-logger" (nfIO (MonadLogger.runNoLoggingT monadLoggerLog))]] -loggingEffectStdoutHandler = PP.putDoc . (<> PP.linebreak) . LoggingEffect.renderWithSeverity id+loggingEffectStdoutHandler = PP.putDoc . (<> PP.line') . LoggingEffect.renderWithSeverity id -loggingEffectLog :: LoggingEffect.MonadLog (LoggingEffect.WithSeverity PP.Doc) m => m ()+loggingEffectLog :: LoggingEffect.MonadLog (LoggingEffect.WithSeverity (PP.Doc ann)) m => m () loggingEffectLog = LoggingEffect.logMessage (LoggingEffect.WithSeverity LoggingEffect.Debug "Log message") monadLoggerLog :: MonadLogger.MonadLogger m => m ()
Changelog.md view
@@ -1,3 +1,9 @@+## 1.3.1++* Add `MonadUnliftIO` instance for `LoggingT`.++---+ # 1.3.0 ## Major Changes
logging-effect.cabal view
@@ -1,5 +1,5 @@ name: logging-effect-version: 1.3.0+version: 1.3.1 synopsis: A mtl-style monad transformer for general purpose & compositional logging homepage: https://github.com/ocharles/logging-effect license: BSD3@@ -27,6 +27,7 @@ , monad-control >= 1.0.0.4 && < 1.1 , transformers-base >= 0.4.4 && < 0.5 , semigroups >= 0.16.2.2 && < 0.19+ , unliftio-core >= 0.1.1.0 && < 0.2 hs-source-dirs: src default-language: Haskell2010 ghc-options: -O2 -Wall@@ -34,6 +35,6 @@ Benchmark benchmark-logging-effect type: exitcode-stdio-1.0 main-is: Benchmark.hs- build-depends: base, logging-effect, criterion, monad-logger, fast-logger, text, bytestring, wl-pprint-text, lifted-async, time+ build-depends: base, logging-effect, criterion, monad-logger, fast-logger, text, bytestring, prettyprinter, lifted-async, time ghc-options: -O2 default-language: Haskell2010
src/Control/Monad/Log.hs view
@@ -83,6 +83,7 @@ import Control.Monad.Fix import Control.Monad.Free.Class (MonadFree(..)) import Control.Monad.IO.Class (MonadIO, liftIO)+import Control.Monad.IO.Unlift (MonadUnliftIO(..), UnliftIO(..), withUnliftIO) import Control.Monad.RWS.Class (MonadRWS) import Control.Monad.Reader.Class (MonadReader(..)) import Control.Monad.State.Class (MonadState(..))@@ -379,6 +380,12 @@ runInBase (\(LoggingT (ReaderT m)) -> runInReader (m handler))))) restoreM st = LoggingT (ReaderT (\_ -> restoreM st))++instance MonadUnliftIO m => MonadUnliftIO (LoggingT msg m) where+ askUnliftIO =+ LoggingT . ReaderT $ \h ->+ withUnliftIO $ \u ->+ return (UnliftIO (unliftIO u . flip runLoggingT h)) -- | Given a 'Handler' for a given @message@, interleave this 'Handler' into the -- underlying @m@ computation whenever 'logMessage' is called.