Blammo 1.0.3.0 → 1.1.0.0
raw patch · 5 files changed
+21/−12 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Blammo.Logging.Logger: getLoggerLoggerSet :: Logger -> LoggerSet
+ Blammo.Logging.Logger: flushLogger :: (MonadIO m, MonadReader env m, HasLogger env) => m ()
- Blammo.Logging: runLoggerLoggingT :: (MonadIO m, HasLogger env) => env -> LoggingT m a -> m a
+ Blammo.Logging: runLoggerLoggingT :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
- Blammo.Logging.Simple: runSimpleLoggingT :: MonadIO m => LoggingT m a -> m a
+ Blammo.Logging.Simple: runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a
Files
- Blammo.cabal +1/−1
- CHANGELOG.md +6/−1
- src/Blammo/Logging.hs +6/−5
- src/Blammo/Logging/Logger.hs +6/−4
- src/Blammo/Logging/Simple.hs +2/−1
Blammo.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: Blammo-version: 1.0.3.0+version: 1.1.0.0 license: MIT license-file: LICENSE maintainer: Freckle Education
CHANGELOG.md view
@@ -1,4 +1,9 @@-## [_Unreleased_](https://github.com/freckle/blammo/compare/v1.0.3.0...main)+## [_Unreleased_](https://github.com/freckle/blammo/compare/v1.1.0.0...main)++## [v1.1.0.0](https://github.com/freckle/blammo/compare/v1.0.3.0...v1.1.0.0)++- Add `flushLogger`+- Ensure log is flushed even on exceptions. ## [v1.0.3.0](https://github.com/freckle/blammo/compare/v1.0.2.3...v1.0.3.0)
src/Blammo/Logging.hs view
@@ -56,18 +56,19 @@ import Blammo.Logging.Logger import Control.Lens ((^.)) import Control.Monad.Catch (MonadMask)-import Control.Monad.IO.Class (MonadIO(..))+import Control.Monad.IO.Unlift (MonadUnliftIO) import Control.Monad.Logger.Aeson import Data.Aeson (Series) import Data.Aeson.Types (Pair) import Data.ByteString (ByteString)+import UnliftIO.Exception (finally) -runLoggerLoggingT :: (MonadIO m, HasLogger env) => env -> LoggingT m a -> m a-runLoggerLoggingT env f = do- a <- runLoggingT+runLoggerLoggingT+ :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a+runLoggerLoggingT env f = (`finally` flushLogStr logger) $ do+ runLoggingT (filterLogger (getLoggerShouldLog logger) f) (loggerOutput logger $ getLoggerReformat logger)- a <$ flushLogStr logger where logger = env ^. loggerL loggerOutput
src/Blammo/Logging/Logger.hs view
@@ -2,6 +2,7 @@ ( Logger , HasLogger(..) , newLogger+ , flushLogger , getLoggerReformat , getLoggerShouldLog , pushLogStrLn@@ -13,9 +14,6 @@ , getLoggedMessages , getLoggedMessagesLenient , getLoggedMessagesUnsafe-- -- * Deprecated- , getLoggerLoggerSet ) where import Prelude@@ -53,7 +51,6 @@ getLoggerLoggerSet :: Logger -> LoggerSet getLoggerLoggerSet = lLoggerSet-{-# DEPRECATED getLoggerLoggerSet "Internal function, will be removed in a future version" #-} getLoggerReformat :: Logger -> LogLevel -> ByteString -> ByteString getLoggerReformat = lReformat@@ -104,6 +101,11 @@ lLoggedMessages = Nothing pure $ Logger { .. }++flushLogger :: (MonadIO m, MonadReader env m, HasLogger env) => m ()+flushLogger = do+ logger <- view loggerL+ flushLogStr logger -- | Create a 'Logger' that will capture log messages instead of logging them --
src/Blammo/Logging/Simple.hs view
@@ -10,13 +10,14 @@ import Blammo.Logging import qualified Blammo.Logging.LogSettings.Env as Env import Control.Monad.IO.Class (MonadIO(..))+import Control.Monad.IO.Unlift (MonadUnliftIO) -- | Construct a 'Logger' configured via environment variables newLoggerEnv :: MonadIO m => m Logger newLoggerEnv = liftIO $ newLogger =<< Env.parse -- | Construct a 'Logger' configured via environment variables and use it-runSimpleLoggingT :: MonadIO m => LoggingT m a -> m a+runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a runSimpleLoggingT f = do logger <- newLoggerEnv runLoggerLoggingT logger f