Blammo 2.0.0.0 → 2.1.0.0
raw patch · 8 files changed
+100/−74 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Blammo.Logging: LogColorAlways :: LogColor
- Blammo.Logging: LogColorAuto :: LogColor
- Blammo.Logging: LogColorNever :: LogColor
- Blammo.Logging: LogDestinationFile :: FilePath -> LogDestination
- Blammo.Logging: LogDestinationStderr :: LogDestination
- Blammo.Logging: LogDestinationStdout :: LogDestination
- Blammo.Logging: LogFormatJSON :: LogFormat
- Blammo.Logging: LogFormatTerminal :: LogFormat
- Blammo.Logging: WithLogger :: ReaderT env m a -> WithLogger env m a
- Blammo.Logging: class HasLogger env
- Blammo.Logging: class MonadCatch m => MonadMask (m :: Type -> Type)
- Blammo.Logging: data LogColor
- Blammo.Logging: data LogDestination
- Blammo.Logging: data LogFormat
- Blammo.Logging: data LogSettings
- Blammo.Logging: data () => LoggingT (m :: Type -> Type) a
- Blammo.Logging: defaultLogSettings :: LogSettings
- Blammo.Logging: loggerL :: HasLogger env => Lens' env Logger
- Blammo.Logging: myThreadContext :: (MonadIO m, MonadThrow m) => m (KeyMap Value)
- Blammo.Logging: newLogger :: MonadIO m => LogSettings -> m Logger
- Blammo.Logging: newtype WithLogger env m a
- Blammo.Logging: runLoggerLoggingT :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
- Blammo.Logging: runWithLogger :: env -> WithLogger env m a -> m a
- Blammo.Logging: setLogSettingsBreakpoint :: Int -> LogSettings -> LogSettings
- Blammo.Logging: setLogSettingsColor :: LogColor -> LogSettings -> LogSettings
- Blammo.Logging: setLogSettingsConcurrency :: Maybe Int -> LogSettings -> LogSettings
- Blammo.Logging: setLogSettingsDestination :: LogDestination -> LogSettings -> LogSettings
- Blammo.Logging: setLogSettingsFormat :: LogFormat -> LogSettings -> LogSettings
- Blammo.Logging: setLogSettingsLevels :: LogLevels -> LogSettings -> LogSettings
- Blammo.Logging: type Pair = (Key, Value)
- Blammo.Logging: withLogger :: MonadUnliftIO m => LogSettings -> (Logger -> m a) -> m a
- Blammo.Logging: withThreadContext :: (MonadIO m, MonadMask m) => [Pair] -> m a -> m a
- Blammo.Logging.Simple: newLoggerEnv :: MonadIO m => m Logger
- Blammo.Logging.Simple: runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a
- Blammo.Logging.Simple: withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a
+ Blammo.Logging.Setup: WithLogger :: ReaderT env m a -> WithLogger env m a
+ Blammo.Logging.Setup: class HasLogger env
+ Blammo.Logging.Setup: data () => LoggingT (m :: Type -> Type) a
+ Blammo.Logging.Setup: loggerL :: HasLogger env => Lens' env Logger
+ Blammo.Logging.Setup: newLogger :: MonadIO m => LogSettings -> m Logger
+ Blammo.Logging.Setup: newLoggerEnv :: MonadIO m => m Logger
+ Blammo.Logging.Setup: newtype WithLogger env m a
+ Blammo.Logging.Setup: runLoggerLoggingT :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
+ Blammo.Logging.Setup: runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a
+ Blammo.Logging.Setup: runWithLogger :: env -> WithLogger env m a -> m a
+ Blammo.Logging.Setup: withLogger :: MonadUnliftIO m => LogSettings -> (Logger -> m a) -> m a
+ Blammo.Logging.Setup: withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a
+ Blammo.Logging.ThreadContext: class MonadCatch m => MonadMask (m :: Type -> Type)
+ Blammo.Logging.ThreadContext: myThreadContext :: (MonadIO m, MonadThrow m) => m (KeyMap Value)
+ Blammo.Logging.ThreadContext: type Pair = (Key, Value)
+ Blammo.Logging.ThreadContext: withThreadContext :: (MonadIO m, MonadMask m) => [Pair] -> m a -> m a
Files
- Blammo.cabal +3/−1
- CHANGELOG.md +24/−2
- src/Blammo/Logging.hs +2/−43
- src/Blammo/Logging/Setup.hs +51/−0
- src/Blammo/Logging/Simple.hs +7/−26
- src/Blammo/Logging/ThreadContext.hs +10/−0
- tests/Blammo/Logging/LoggerSpec.hs +1/−1
- tests/Blammo/Logging/TerminalSpec.hs +2/−1
Blammo.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: Blammo-version: 2.0.0.0+version: 2.1.0.0 license: MIT license-file: LICENSE maintainer: Freckle Education@@ -27,10 +27,12 @@ Blammo.Logging.LogSettings Blammo.Logging.LogSettings.Env Blammo.Logging.LogSettings.LogLevels+ Blammo.Logging.Setup Blammo.Logging.Simple Blammo.Logging.Terminal Blammo.Logging.Terminal.LogPiece Blammo.Logging.Test+ Blammo.Logging.ThreadContext Blammo.Logging.WithLogger Data.Aeson.Compat System.Log.FastLogger.Compat
CHANGELOG.md view
@@ -1,6 +1,28 @@-## [_Unreleased_](https://github.com/freckle/blammo/compare/v1.2.1.0...main)+## [_Unreleased_](https://github.com/freckle/blammo/compare/Blammo-v2.2.0.0...main) -## [v2.0.0.0](https://github.com/freckle/blammo/compare/v1.2.1.0...v2.0.0.0)+## [v2.1.0.0](https://github.com/freckle/blammo/compare/v2.0.0.0...Blammo-v2.1.0.0)++Removes less frequently used definitions from the main `Blammo.Logging` module+into other modules.++- Moved from `Blammo.Logging` to new module `Blammo.Logging.ThreadContext`:+ `MonadMask`, `withThreadContext`, `myThreadContext`, `Pair`.+- Removed from `Blammo.Logging` (still available in `Blammo.Logging.LogSettings`):+ `LogSettings`, `LogDestination (..)`, `LogFormat (..)`, `defaultLogSettings`,+ `LogColor (..)`, `setLogSettingsLevels`, `setLogSettingsDestination`,+ `setLogSettingsFormat`, `setLogSettingsColor`, `setLogSettingsBreakpoint`,+ `setLogSettingsConcurrency`.+- Moved from `Blammo.Logging` to new module `Blammo.Logging.Setup`:+ `HasLogger (..)`, `withLogger`, `newLogger`, `runLoggerLoggingT`, `LoggingT`,+ `WithLogger (..)`, `runWithLogger`++`Blammo.Logging.Simple` has been expanded to include reëxports of:++- `Blammo.Logging.LogSettings`+- `Blammo.Logging.Setup`+- `Blammo.Logging.ThreadContext`++## [v2.0.0.0](https://github.com/freckle/blammo/compare/v1.2.1.0...Blammo-v2.0.0.0) - Remove module `Network.Wai.Middleware.Logging`. It is moved to a new package, `Blammo-wai`.
src/Blammo/Logging.hs view
@@ -1,21 +1,6 @@ module Blammo.Logging- ( LogSettings- , LogLevel (..)- , LogDestination (..)- , LogFormat (..)- , LogColor (..)- , defaultLogSettings- , setLogSettingsLevels- , setLogSettingsDestination- , setLogSettingsFormat- , setLogSettingsColor- , setLogSettingsBreakpoint- , setLogSettingsConcurrency+ ( LogLevel (..) , Logger- , HasLogger (..)- , withLogger- , newLogger- , runLoggerLoggingT -- * Re-exports from "Control.Monad.Logger.Aeson" @@ -24,18 +9,9 @@ , (.=) , Series - -- ** Thread Context- , MonadMask- , withThreadContext- , myThreadContext- , Pair-- -- ** Transformers+ -- ** Classes , MonadLogger (..) , MonadLoggerIO (..)- , LoggingT- , WithLogger (..)- , runWithLogger -- ** Common logging functions @@ -57,23 +33,6 @@ , logOtherNS ) where -import Blammo.Logging.LogSettings import Blammo.Logging.Logger-import Blammo.Logging.WithLogger-import Control.Lens (view)-import Control.Monad.Catch (MonadMask)-import Control.Monad.IO.Unlift (MonadUnliftIO) import Control.Monad.Logger.Aeson import Data.Aeson (Series)-import Data.Aeson.Types (Pair)-import UnliftIO.Exception (finally)---- | Initialize logging, pass a 'Logger' to the callback, and clean up at the end------ Applications should avoid calling this more than once in their lifecycle.-runLoggerLoggingT- :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a-runLoggerLoggingT env f =- runLoggingT f (runLogAction logger) `finally` flushLogStr logger- where- logger = view loggerL env
+ src/Blammo/Logging/Setup.hs view
@@ -0,0 +1,51 @@+module Blammo.Logging.Setup+ ( HasLogger (..)+ , withLogger+ , newLogger+ , runLoggerLoggingT+ , LoggingT+ , WithLogger (..)+ , runWithLogger+ , newLoggerEnv+ , withLoggerEnv+ , runSimpleLoggingT+ ) where++import Prelude++import Blammo.Logging+import qualified Blammo.Logging.LogSettings.Env as Env+import Blammo.Logging.Logger+import Blammo.Logging.WithLogger+import Control.Lens (view)+import Control.Monad.IO.Class (MonadIO (..))+import Control.Monad.IO.Unlift (MonadUnliftIO)+import Control.Monad.Logger.Aeson+import UnliftIO.Exception (finally)++-- | Construct a 'Logger' configured via environment variables+newLoggerEnv :: MonadIO m => m Logger+newLoggerEnv = liftIO $ newLogger =<< Env.parse++-- | Initialize logging (configured via environment variables),+-- pass a 'Logger' to the callback, and clean up at the end+--+-- Applications should avoid calling this more than once in their lifecycle.+withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a+withLoggerEnv f = liftIO Env.parse >>= \logger -> withLogger logger f++-- | Construct a 'Logger' configured via environment variables and use it+runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a+runSimpleLoggingT f = do+ logger <- newLoggerEnv+ runLoggerLoggingT logger f++-- | Initialize logging, pass a 'Logger' to the callback, and clean up at the end+--+-- Applications should avoid calling this more than once in their lifecycle.+runLoggerLoggingT+ :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a+runLoggerLoggingT env f =+ runLoggingT f (runLogAction logger) `finally` flushLogStr logger+ where+ logger = view loggerL env
src/Blammo/Logging/Simple.hs view
@@ -1,31 +1,12 @@ -- | Simplified out-of-the-box logging module Blammo.Logging.Simple- ( newLoggerEnv- , withLoggerEnv- , runSimpleLoggingT- , module Blammo.Logging+ ( module Blammo.Logging+ , module Blammo.Logging.LogSettings+ , module Blammo.Logging.ThreadContext+ , module Blammo.Logging.Setup ) where -import Prelude- 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---- | Initialize logging (configured via environment variables),--- pass a 'Logger' to the callback, and clean up at the end------ Applications should avoid calling this more than once in their lifecycle.-withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a-withLoggerEnv f = liftIO Env.parse >>= \logger -> withLogger logger f---- | Construct a 'Logger' configured via environment variables and use it-runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a-runSimpleLoggingT f = do- logger <- newLoggerEnv- runLoggerLoggingT logger f+import Blammo.Logging.LogSettings+import Blammo.Logging.Setup+import Blammo.Logging.ThreadContext
+ src/Blammo/Logging/ThreadContext.hs view
@@ -0,0 +1,10 @@+module Blammo.Logging.ThreadContext+ ( MonadMask+ , withThreadContext+ , myThreadContext+ , Pair+ ) where++import Control.Monad.Catch (MonadMask)+import Control.Monad.Logger.Aeson (myThreadContext, withThreadContext)+import Data.Aeson.Types (Pair)
tests/Blammo/Logging/LoggerSpec.hs view
@@ -6,8 +6,8 @@ import Prelude -import Blammo.Logging import Blammo.Logging.Logger+import Blammo.Logging.Simple import Control.Monad.Reader (runReaderT) import Data.Aeson (Value (..)) import qualified Data.Aeson.Compat as KeyMap
tests/Blammo/Logging/TerminalSpec.hs view
@@ -9,7 +9,8 @@ import Blammo.Logging import Blammo.Logging.Logger (LoggedMessage (..)) import Blammo.Logging.Terminal-import Data.Aeson+import Data.Aeson (encode, object)+import Data.Aeson.Types (Object, Pair, Value (..)) import Data.ByteString (ByteString) import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8