polysemy-log-di 0.1.0.0 → 0.2.0.0
raw patch · 3 files changed
+40/−8 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Polysemy.Log.Di: interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r => Int -> InterpreterFor Log r
+ Polysemy.Log.Di.Di: interpretDataLogDiLocal :: forall level path msg r. Member (Di level path msg) r => (msg -> level) -> (msg -> msg) -> InterpreterFor (DataLog msg) r
+ Polysemy.Log.Di.Di: interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r => Int -> InterpreterFor Log r
Files
- lib/Polysemy/Log/Di.hs +3/−2
- lib/Polysemy/Log/Di/Di.hs +36/−5
- polysemy-log-di.cabal +1/−1
lib/Polysemy/Log/Di.hs view
@@ -6,13 +6,14 @@ -- * Interpreters interpretLogDi, interpretLogDi',+ interpretLogDiConc, interpretDataLogDi, interpretDiAtomic, interpretDiAtomic' ) where -import Polysemy.Log.Di.Di (interpretLogDi, interpretLogDi', interpretDataLogDi)-import Polysemy.Log.Di.Atomic (interpretDiAtomic', interpretDiAtomic)+import Polysemy.Log.Di.Atomic (interpretDiAtomic, interpretDiAtomic')+import Polysemy.Log.Di.Di (interpretDataLogDi, interpretLogDi, interpretLogDi', interpretLogDiConc) -- $intro -- This package is a [di](https://hackage.haskell.org/package/di-polysemy) adapter for -- [polysemy-log](https://hackage.haskell.org/package/polysemy-log), providing interpreters that convert
lib/Polysemy/Log/Di/Di.hs view
@@ -2,28 +2,47 @@ module Polysemy.Log.Di.Di where import qualified DiPolysemy as Di+import Polysemy (interpretH, runT)+import Polysemy.Async (Async) import Polysemy.Internal (InterpretersFor, raise2Under)+import Polysemy.Internal.Tactics (liftT)+import Polysemy.Resource (Resource) import Polysemy.Time (GhcTime) -import Polysemy.Log.Data.DataLog (DataLog(DataLog))+import Polysemy.Log.Data.DataLog (DataLog(DataLog, Local)) import Polysemy.Log.Data.Log (Log) import qualified Polysemy.Log.Data.LogEntry as LogEntry import Polysemy.Log.Data.LogEntry (LogEntry) import qualified Polysemy.Log.Data.LogMessage as LogMessage import Polysemy.Log.Data.LogMessage (LogMessage) import Polysemy.Log.Data.Severity (Severity)-import Polysemy.Log.Log (interpretLogDataLog, interpretLogDataLog')+import Polysemy.Log.Log (interpretLogDataLog, interpretLogDataLog', interpretLogDataLogConc) -- |Reinterpret 'DataLog' as 'Di.Di', using the provided function to extract the log level from the message.+-- Maintains a context function as state that is applied to each logged message, allowing the context of a block to be+-- modified.+interpretDataLogDiLocal ::+ ∀ level path msg r .+ Member (Di.Di level path msg) r =>+ (msg -> level) ->+ (msg -> msg) ->+ InterpreterFor (DataLog msg) r+interpretDataLogDiLocal extractLevel context =+ interpretH \case+ DataLog msg ->+ liftT (Di.log @_ @path (extractLevel msg) (context msg))+ Local f ma ->+ raise . interpretDataLogDiLocal @_ @path extractLevel (f . context) =<< runT ma+{-# INLINE interpretDataLogDiLocal #-}++-- |Reinterpret 'DataLog' as 'Di.Di', using the provided function to extract the log level from the message. interpretDataLogDi :: ∀ level path msg r . Member (Di.Di level path msg) r => (msg -> level) -> InterpreterFor (DataLog msg) r interpretDataLogDi extractLevel =- interpret \case- DataLog msg ->- Di.log @_ @path (extractLevel msg) msg+ interpretDataLogDiLocal @_ @path extractLevel id {-# INLINE interpretDataLogDi #-} -- |Reinterpret 'Log' as 'Di.Di', using the /polysemy-log/ default message.@@ -51,3 +70,15 @@ raiseUnder . raise2Under {-# INLINE interpretLogDi' #-}++-- |Reinterpret 'Log' as 'Di.Di' concurrently.+interpretLogDiConc ::+ ∀ path r .+ Members [Di.Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r =>+ Int ->+ InterpreterFor Log r+interpretLogDiConc maxQueued =+ interpretDataLogDi @_ @path (LogMessage.severity . LogEntry.message) .+ interpretLogDataLogConc maxQueued .+ raiseUnder+{-# INLINE interpretLogDiConc #-}
polysemy-log-di.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: polysemy-log-di-version: 0.1.0.0+version: 0.2.0.0 synopsis: polysemy-log interpreter for di description: See <https://hackage.haskell.org/package/polysemy-log-di/docs/Polysemy-Log-Di.html> category: Logging