packages feed

log-effectful 1.0.1.0 → 1.0.2.0

raw patch · 3 files changed

+35/−4 lines, 3 filesdep ~aesonPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: aeson

API changes (from Hackage documentation)

+ Effectful.Log: runNoLog :: forall (es :: [(Type -> Type) -> Type -> Type]) a. Eff (Log ': es) a -> Eff es a
- Effectful.Log: [GetLoggerEnv] :: Log m LoggerEnv
+ Effectful.Log: [GetLoggerEnv] :: forall (a :: Type -> Type). Log a LoggerEnv
- Effectful.Log: [LocalData] :: [Pair] -> m a -> Log m a
+ Effectful.Log: [LocalData] :: forall (a :: Type -> Type) b. [Pair] -> a b -> Log a b
- Effectful.Log: [LocalDomain] :: Text -> m a -> Log m a
+ Effectful.Log: [LocalDomain] :: forall (a :: Type -> Type) b. Text -> a b -> Log a b
- Effectful.Log: [LocalMaxLogLevel] :: LogLevel -> m a -> Log m a
+ Effectful.Log: [LocalMaxLogLevel] :: forall (a :: Type -> Type) b. LogLevel -> a b -> Log a b
- Effectful.Log: [LogMessageOp] :: LogLevel -> Text -> Value -> Log m ()
+ Effectful.Log: [LogMessageOp] :: forall (a :: Type -> Type). LogLevel -> Text -> Value -> Log a ()
- Effectful.Log: data Log :: Effect
+ Effectful.Log: data Log (a :: Type -> Type) b
- Effectful.Log: runLog :: IOE :> es => Text -> Logger -> LogLevel -> Eff (Log : es) a -> Eff es a
+ Effectful.Log: runLog :: forall (es :: [Effect]) a. IOE :> es => Text -> Logger -> LogLevel -> Eff (Log ': es) a -> Eff es a

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+# log-effectful-1.0.2.0 (2026-08-11)+* Add `runNoLog`, a handler that discards all log messages without requiring+  `IOE` in the effect stack.+ # log-effectful-1.0.1.0 (2024-11-07) * Convert `Log` into a dynamically dispatched effect. 
log-effectful.cabal view
@@ -1,7 +1,7 @@ cabal-version:      3.0 build-type:         Simple name:               log-effectful-version:            1.0.1.0+version:            1.0.2.0 license:            BSD-3-Clause license-file:       LICENSE category:           System@@ -16,7 +16,7 @@   CHANGELOG.md   README.md -tested-with: GHC == { 8.10.7, 9.0.2, 9.2.8, 9.4.8, 9.6.6, 9.8.2, 9.10.1 }+tested-with: GHC == { 8.10.7, 9.0.2, 9.2.8, 9.4.8, 9.6.7, 9.8.4, 9.10.3, 9.12.4, 9.14.1 }  bug-reports: https://github.com/haskell-effectful/log-effectful/issues source-repository head@@ -70,11 +70,9 @@   ghc-options:     -threaded -rtsopts    build-depends:     base-                   , aeson                    , effectful-core                    , log-base                    , log-effectful-                   , text    hs-source-dirs: tests 
src/Effectful/Log.hs view
@@ -7,6 +7,7 @@      -- ** Handlers   , runLog+  , runNoLog      -- * Re-exports   , module Log@@ -33,6 +34,10 @@ -- | Run the 'Log' effect. -- -- /Note:/ this is the @effectful@ version of 'runLogT'.+--+-- /Note:/ logging can be skipped by passing 'mempty' as the 'Logger', which+-- discards all messages while still requiring 'IOE'. Use 'runNoLog' instead+-- if 'IOE' is not otherwise present in the type signature. runLog   :: IOE :> es   => Text@@ -63,6 +68,30 @@       , leDomain = []       , leData = []       , leMaxLogLevel = maxLogLevel+      }++-- | Run the 'Log' effect by discarding all messages.+--+-- This is useful for skipping the 'Log' effect when it is present in the+-- type signature but no actual logging back-end is available, e.g. when+-- running pure code with 'runPureEff'.+runNoLog :: Eff (Log : es) a -> Eff es a+runNoLog = reinterpret reader $ \env -> \case+  LogMessageOp {} -> pure ()+  LocalData data_ action -> localSeqUnlift env $ \unlift -> do+    (`local` unlift action) $ \logEnv -> logEnv { leData = data_ ++ leData logEnv }+  LocalDomain domain action -> localSeqUnlift env $ \unlift -> do+    (`local` unlift action) $ \logEnv -> logEnv { leDomain = leDomain logEnv ++ [domain] }+  LocalMaxLogLevel level action -> localSeqUnlift env $ \unlift -> do+    (`local` unlift action) $ \logEnv -> logEnv { leMaxLogLevel = level }+  GetLoggerEnv -> ask+  where+    reader = runReader LoggerEnv+      { leLogger = mempty+      , leComponent = mempty+      , leDomain = []+      , leData = []+      , leMaxLogLevel = defaultLogLevel       }  -- | Orphan, canonical instance.