polysemy-log 0.6.0.1 → 0.7.0.0
raw patch · 27 files changed
+302/−309 lines, 27 filesdep ~basedep ~incipit-coredep ~polysemyPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, incipit-core, polysemy, polysemy-conc, polysemy-test, polysemy-time
API changes (from Hackage documentation)
- Polysemy.Log.Data.DataLog: [DataLog] :: a -> DataLog a m ()
- Polysemy.Log.Data.DataLog: [Local] :: (a -> a) -> m b -> DataLog a m b
- Polysemy.Log.Data.DataLog: crit :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.DataLog: data DataLog a :: Effect
- Polysemy.Log.Data.DataLog: debug :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.DataLog: error :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.DataLog: info :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.DataLog: log :: HasCallStack => Members [Logger, GhcTime] r => Severity -> Text -> Sem r ()
- Polysemy.Log.Data.DataLog: trace :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.DataLog: type Logger = DataLog (LogEntry LogMessage)
- Polysemy.Log.Data.DataLog: warn :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
- Polysemy.Log.Data.Log: [Log] :: HasCallStack => LogMessage -> Log m ()
- Polysemy.Log.Data.Log: crit :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.Log: data Log :: Effect
- Polysemy.Log.Data.Log: debug :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.Log: error :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.Log: info :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.Log: log :: HasCallStack => Member Log r => Severity -> Text -> Sem r ()
- Polysemy.Log.Data.Log: trace :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.Log: warn :: HasCallStack => Member Log r => Text -> Sem r ()
- Polysemy.Log.Data.LogMetadata: [Annotated] :: HasCallStack => msg -> LogMetadata msg m ()
- Polysemy.Log.Data.LogMetadata: annotated :: HasCallStack => Member (LogMetadata msg) r => msg -> Sem r ()
- Polysemy.Log.Data.LogMetadata: data LogMetadata msg :: Effect
+ Polysemy.Log: interpretDataLog :: forall a r. (a -> Sem r ()) -> InterpreterFor (DataLog a) r
+ Polysemy.Log: parseSeverity :: Text -> Maybe Severity
+ Polysemy.Log.Data.Severity: parseSeverity :: Text -> Maybe Severity
+ Polysemy.Log.Effect.DataLog: [DataLog] :: a -> DataLog a m ()
+ Polysemy.Log.Effect.DataLog: [Local] :: (a -> a) -> m b -> DataLog a m b
+ Polysemy.Log.Effect.DataLog: crit :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: data DataLog a :: Effect
+ Polysemy.Log.Effect.DataLog: debug :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: error :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: info :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: log :: HasCallStack => Members [Logger, GhcTime] r => Severity -> Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: trace :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.DataLog: type Logger = DataLog (LogEntry LogMessage)
+ Polysemy.Log.Effect.DataLog: warn :: HasCallStack => Members [Logger, GhcTime] r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: [Log] :: HasCallStack => LogMessage -> Log m ()
+ Polysemy.Log.Effect.Log: crit :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: data Log :: Effect
+ Polysemy.Log.Effect.Log: debug :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: error :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: info :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: log :: HasCallStack => Member Log r => Severity -> Text -> Sem r ()
+ Polysemy.Log.Effect.Log: trace :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.Log: warn :: HasCallStack => Member Log r => Text -> Sem r ()
+ Polysemy.Log.Effect.LogMetadata: [Annotated] :: HasCallStack => msg -> LogMetadata msg m ()
+ Polysemy.Log.Effect.LogMetadata: annotated :: HasCallStack => Member (LogMetadata msg) r => msg -> Sem r ()
+ Polysemy.Log.Effect.LogMetadata: data LogMetadata msg :: Effect
Files
- changelog.md +0/−20
- lib/Polysemy/Log.hs +7/−4
- lib/Polysemy/Log/Atomic.hs +2/−2
- lib/Polysemy/Log/Conc.hs +2/−2
- lib/Polysemy/Log/Data/DataLog.hs +0/−100
- lib/Polysemy/Log/Data/Log.hs +0/−102
- lib/Polysemy/Log/Data/LogEntry.hs +1/−1
- lib/Polysemy/Log/Data/LogMessage.hs +1/−1
- lib/Polysemy/Log/Data/LogMetadata.hs +0/−20
- lib/Polysemy/Log/Data/Severity.hs +15/−1
- lib/Polysemy/Log/Effect/DataLog.hs +99/−0
- lib/Polysemy/Log/Effect/Log.hs +100/−0
- lib/Polysemy/Log/Effect/LogMetadata.hs +20/−0
- lib/Polysemy/Log/Handle.hs +1/−1
- lib/Polysemy/Log/Level.hs +2/−2
- lib/Polysemy/Log/Log.hs +3/−3
- lib/Polysemy/Log/Pure.hs +1/−1
- lib/Polysemy/Log/Stderr.hs +2/−2
- lib/Polysemy/Log/Stdout.hs +2/−2
- polysemy-log.cabal +27/−22
- readme.md +0/−6
- test/Polysemy/Log/Test/ConcTest.hs +3/−3
- test/Polysemy/Log/Test/DataLogTest.hs +3/−3
- test/Polysemy/Log/Test/ExampleTest.hs +2/−2
- test/Polysemy/Log/Test/LocalTest.hs +5/−5
- test/Polysemy/Log/Test/LogEntryTest.hs +2/−2
- test/Polysemy/Log/Test/SimpleTest.hs +2/−2
− changelog.md
@@ -1,20 +0,0 @@-# Unreleased--* Add interceptors for setting the log level.-* Set std streams to line buffering.--# 0.3.0.0--* Add concurrent interpreters for stdout and stderr.-* Add stdout interpreters.--# 0.2.1.0--* Add naive stderr interpreters for `DataLog` and `Log`.--# 0.2.0.0--* `DataLog` got a second constructor, `Local`. It takes a higher-order `Sem` and a transformation function, the latter- of which is applied to all messages logged within the former.- This allows context manipulation for blocks of code.-* `interceptDataLogConc` adds support for concurrent processing of log messages to any interpretation of `DataLog`.
lib/Polysemy/Log.hs view
@@ -1,7 +1,7 @@ {-# language NoImplicitPrelude #-} {-# options_haddock prune #-}--- |Description: Polysemy Effects for Logging +-- |Description: Polysemy Effects for Logging module Polysemy.Log ( -- * Introduction -- $intro@@ -19,6 +19,7 @@ interpretDataLogStdout, interpretDataLogAtomic', interpretDataLogAtomic,+ interpretDataLog, -- * Text Messages with Severity and Metadata -- $messages@@ -34,6 +35,7 @@ crit, formatLogEntry, Severity(..),+ parseSeverity, setLogLevel, setLogLevelWith, @@ -66,14 +68,15 @@ import Polysemy.Log.Atomic (interpretDataLogAtomic, interpretDataLogAtomic', interpretLogAtomic, interpretLogAtomic') import Polysemy.Log.Conc (interceptDataLogConc)-import Polysemy.Log.Data.DataLog (DataLog (DataLog), Logger, dataLog)-import Polysemy.Log.Data.Log (Log (Log), crit, debug, error, info, log, trace, warn)+import Polysemy.Log.Effect.DataLog (DataLog (DataLog), Logger, dataLog)+import Polysemy.Log.Effect.Log (Log (Log), crit, debug, error, info, log, trace, warn) import Polysemy.Log.Data.LogEntry (LogEntry (LogEntry)) import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))-import Polysemy.Log.Data.Severity (Severity (..))+import Polysemy.Log.Data.Severity (Severity (..), parseSeverity) import Polysemy.Log.Format (formatLogEntry) import Polysemy.Log.Level (setLogLevel, setLogLevelWith) import Polysemy.Log.Log (+ interpretDataLog, interpretLogDataLog, interpretLogDataLog', interpretLogDataLogConc,
lib/Polysemy/Log/Atomic.hs view
@@ -3,8 +3,8 @@ import Control.Concurrent.STM (newTVarIO) -import Polysemy.Log.Data.DataLog (DataLog)-import Polysemy.Log.Data.Log (Log (Log))+import Polysemy.Log.Effect.DataLog (DataLog)+import Polysemy.Log.Effect.Log (Log (Log)) import Polysemy.Log.Data.LogMessage (LogMessage) import Polysemy.Log.Log (interpretDataLog)
lib/Polysemy/Log/Conc.hs view
@@ -9,8 +9,8 @@ import Polysemy.Internal.Tactics (liftT) import Polysemy.Time (Seconds (Seconds)) -import qualified Polysemy.Log.Data.DataLog as DataLog-import Polysemy.Log.Data.DataLog (DataLog (DataLog, Local))+import qualified Polysemy.Log.Effect.DataLog as DataLog+import Polysemy.Log.Effect.DataLog (DataLog (DataLog, Local)) -- |Intercept 'DataLog' for concurrent processing. -- This does not send any action to the ultimate interpreter but writes all log messages to the provided queue.
− lib/Polysemy/Log/Data/DataLog.hs
@@ -1,100 +0,0 @@-{-# options_haddock prune #-}---- |Description: Internal-module Polysemy.Log.Data.DataLog where--import GHC.Stack (withFrozenCallStack)-import Polysemy.Time (GhcTime)--import Polysemy.Log.Data.LogEntry (LogEntry, annotate)-import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))-import Polysemy.Log.Data.Severity (Severity (Crit, Debug, Error, Info, Trace, Warn))---- |Structural logs, used as a backend for the simpler 'Text' log effect, 'Polysemy.Log.Log'.------ Can also be used on its own, or reinterpreted into an effect like those from /co-log/ or /di/.-data DataLog a :: Effect where- -- |Schedule an arbitrary value for logging.- DataLog :: a -> DataLog a m ()- -- |Stores the provided function in the interpreter and applies it to all log messages emitted within the higher-order- -- thunk that's the second argument.- Local :: (a -> a) -> m b -> DataLog a m b--makeSem ''DataLog---- |Alias for the logger with the default message type used by 'Polysemy.Log.Log'.-type Logger =- DataLog (LogEntry LogMessage)---- |Log a text message with the given severity.--- Basic 'Sem' constructor.-log ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Severity ->- Text ->- Sem r ()-log severity message =- withFrozenCallStack do- send . DataLog =<< annotate (LogMessage severity message)-{-# inline log #-}---- |Log a text message with the 'Trace' severity.-trace ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-trace =- withFrozenCallStack (log Trace)-{-# inline trace #-}---- |Log a text message with the 'Debug' severity.-debug ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-debug =- withFrozenCallStack (log Debug)-{-# inline debug #-}---- |Log a text message with the 'Info' severity.-info ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-info =- withFrozenCallStack (log Info)-{-# inline info #-}---- |Log a text message with the 'Warn' severity.-warn ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-warn =- withFrozenCallStack (log Warn)-{-# inline warn #-}---- |Log a text message with the 'Polysemy.Log.Data.Severity.Error' severity.-error ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-error =- withFrozenCallStack (log Error)-{-# inline error #-}---- |Log a text message with the 'Crit' severity.-crit ::- HasCallStack =>- Members [Logger, GhcTime] r =>- Text ->- Sem r ()-crit =- withFrozenCallStack (log Crit)-{-# inline crit #-}
− lib/Polysemy/Log/Data/Log.hs
@@ -1,102 +0,0 @@--- |Description: Internal-module Polysemy.Log.Data.Log where--import GHC.Stack (withFrozenCallStack)--import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))-import Polysemy.Log.Data.Severity (Severity (Crit, Debug, Error, Info, Trace, Warn))---- |The default high-level effect for simple text messages.--- To be used with the severity constructors:------ @--- import qualified Polysemy.Log as Log------ prog = do--- Log.debug "debugging…"--- Log.warn "warning!"--- @------ Interpreters should preprocess and relay the message to 'Polysemy.Log.DataLog'.-data Log :: Effect where- -- |Schedule a message to be logged.- Log :: HasCallStack => LogMessage -> Log m ()---- |Log a message with the given severity.--- Basic 'Sem' constructor.-log ::- HasCallStack =>- Member Log r =>- Severity ->- Text ->- Sem r ()-log severity message =- withFrozenCallStack $- send (Log (LogMessage severity message))-{-# inline log #-}---- |Log a message with the 'Trace' severity.-trace ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-trace =- withFrozenCallStack $- log Trace-{-# inline trace #-}---- |Log a message with the 'Debug' severity.-debug ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-debug =- withFrozenCallStack $- log Debug-{-# inline debug #-}---- |Log a message with the 'Info' severity.-info ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-info =- withFrozenCallStack $- log Info-{-# inline info #-}---- |Log a message with the 'Warn' severity.-warn ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-warn =- withFrozenCallStack $- log Warn-{-# inline warn #-}---- |Log a message with the 'Polysemy.Log.Data.Severity.Error' severity.-error ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-error =- withFrozenCallStack $- log Error-{-# inline error #-}---- |Log a message with the 'Crit' severity.-crit ::- HasCallStack =>- Member Log r =>- Text ->- Sem r ()-crit =- withFrozenCallStack $- log Crit-{-# inline crit #-}
lib/Polysemy/Log/Data/LogEntry.hs view
@@ -16,7 +16,7 @@ -- |The call stack of the function in which the entry was created. source :: !CallStack }- deriving (Show)+ deriving stock (Show) -- |Add call stack and timestamp to a message and wrap it with 'LogEntry'. annotate ::
lib/Polysemy/Log/Data/LogMessage.hs view
@@ -10,4 +10,4 @@ severity :: !Severity, message :: !Text }- deriving (Eq, Show)+ deriving stock (Eq, Show)
− lib/Polysemy/Log/Data/LogMetadata.hs
@@ -1,20 +0,0 @@--- |Description: Internal-module Polysemy.Log.Data.LogMetadata where---- |Internal effect used as an intermediate stage between 'Polysemy.Log.Log' and 'Polysemy.Log.DataLog', for the purpose--- of isolating the metadata annotation task.------ The type of metadata is arbitrary and chosen in interpreters, but this exposes a 'HasCallStack' dependency since it's--- the primary purpose.-data LogMetadata msg :: Effect where- -- |Schedule a message to be annotated and logged.- Annotated :: HasCallStack => msg -> LogMetadata msg m ()---- |Schedule a message to be annotated and logged.-annotated ::- HasCallStack =>- Member (LogMetadata msg) r =>- msg ->- Sem r ()-annotated msg =- send (Annotated msg)
lib/Polysemy/Log/Data/Severity.hs view
@@ -1,6 +1,8 @@ -- |Description: Internal module Polysemy.Log.Data.Severity where +import qualified Data.Text as Text+ -- |A log message's severity, or log level. data Severity = Trace@@ -14,4 +16,16 @@ Error | Crit- deriving (Eq, Show, Enum, Ord)+ deriving stock (Eq, Show, Enum, Ord)++-- |Parse a 'Text' into a 'Severity'.+parseSeverity :: Text -> Maybe Severity+parseSeverity =+ Text.toLower >>> \case+ "trace" -> Just Trace+ "debug" -> Just Debug+ "info" -> Just Info+ "warn" -> Just Warn+ "error" -> Just Error+ "crit" -> Just Crit+ _ -> Nothing
+ lib/Polysemy/Log/Effect/DataLog.hs view
@@ -0,0 +1,99 @@+{-# options_haddock prune #-}++-- |Description: Internal+module Polysemy.Log.Effect.DataLog where++import Polysemy.Time (GhcTime)++import Polysemy.Log.Data.LogEntry (LogEntry, annotate)+import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))+import Polysemy.Log.Data.Severity (Severity (Crit, Debug, Error, Info, Trace, Warn))++-- |Structural logs, used as a backend for the simpler 'Text' log effect, 'Polysemy.Log.Log'.+--+-- Can also be used on its own, or reinterpreted into an effect like those from /co-log/ or /di/.+data DataLog a :: Effect where+ -- |Schedule an arbitrary value for logging.+ DataLog :: a -> DataLog a m ()+ -- |Stores the provided function in the interpreter and applies it to all log messages emitted within the higher-order+ -- thunk that's the second argument.+ Local :: (a -> a) -> m b -> DataLog a m b++makeSem ''DataLog++-- |Alias for the logger with the default message type used by 'Polysemy.Log.Log'.+type Logger =+ DataLog (LogEntry LogMessage)++-- |Log a text message with the given severity.+-- Basic 'Sem' constructor.+log ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Severity ->+ Text ->+ Sem r ()+log severity message =+ withFrozenCallStack do+ send . DataLog =<< annotate (LogMessage severity message)+{-# inline log #-}++-- |Log a text message with the 'Trace' severity.+trace ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+trace =+ withFrozenCallStack (log Trace)+{-# inline trace #-}++-- |Log a text message with the 'Debug' severity.+debug ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+debug =+ withFrozenCallStack (log Debug)+{-# inline debug #-}++-- |Log a text message with the 'Info' severity.+info ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+info =+ withFrozenCallStack (log Info)+{-# inline info #-}++-- |Log a text message with the 'Warn' severity.+warn ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+warn =+ withFrozenCallStack (log Warn)+{-# inline warn #-}++-- |Log a text message with the 'Polysemy.Log.Data.Severity.Error' severity.+error ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+error =+ withFrozenCallStack (log Error)+{-# inline error #-}++-- |Log a text message with the 'Crit' severity.+crit ::+ HasCallStack =>+ Members [Logger, GhcTime] r =>+ Text ->+ Sem r ()+crit =+ withFrozenCallStack (log Crit)+{-# inline crit #-}
+ lib/Polysemy/Log/Effect/Log.hs view
@@ -0,0 +1,100 @@+-- |Description: Internal+module Polysemy.Log.Effect.Log where++import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))+import Polysemy.Log.Data.Severity (Severity (Crit, Debug, Error, Info, Trace, Warn))++-- |The default high-level effect for simple text messages.+-- To be used with the severity constructors:+--+-- @+-- import qualified Polysemy.Log as Log+--+-- prog = do+-- Log.debug "debugging…"+-- Log.warn "warning!"+-- @+--+-- Interpreters should preprocess and relay the message to 'Polysemy.Log.DataLog'.+data Log :: Effect where+ -- |Schedule a message to be logged.+ Log :: HasCallStack => LogMessage -> Log m ()++-- |Log a message with the given severity.+-- Basic 'Sem' constructor.+log ::+ HasCallStack =>+ Member Log r =>+ Severity ->+ Text ->+ Sem r ()+log severity message =+ withFrozenCallStack $+ send (Log (LogMessage severity message))+{-# inline log #-}++-- |Log a message with the 'Trace' severity.+trace ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+trace =+ withFrozenCallStack $+ log Trace+{-# inline trace #-}++-- |Log a message with the 'Debug' severity.+debug ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+debug =+ withFrozenCallStack $+ log Debug+{-# inline debug #-}++-- |Log a message with the 'Info' severity.+info ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+info =+ withFrozenCallStack $+ log Info+{-# inline info #-}++-- |Log a message with the 'Warn' severity.+warn ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+warn =+ withFrozenCallStack $+ log Warn+{-# inline warn #-}++-- |Log a message with the 'Polysemy.Log.Data.Severity.Error' severity.+error ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+error =+ withFrozenCallStack $+ log Error+{-# inline error #-}++-- |Log a message with the 'Crit' severity.+crit ::+ HasCallStack =>+ Member Log r =>+ Text ->+ Sem r ()+crit =+ withFrozenCallStack $+ log Crit+{-# inline crit #-}
+ lib/Polysemy/Log/Effect/LogMetadata.hs view
@@ -0,0 +1,20 @@+-- |Description: Internal+module Polysemy.Log.Effect.LogMetadata where++-- |Internal effect used as an intermediate stage between 'Polysemy.Log.Log' and 'Polysemy.Log.DataLog', for the purpose+-- of isolating the metadata annotation task.+--+-- The type of metadata is arbitrary and chosen in interpreters, but this exposes a 'HasCallStack' dependency since it's+-- the primary purpose.+data LogMetadata msg :: Effect where+ -- |Schedule a message to be annotated and logged.+ Annotated :: HasCallStack => msg -> LogMetadata msg m ()++-- |Schedule a message to be annotated and logged.+annotated ::+ HasCallStack =>+ Member (LogMetadata msg) r =>+ msg ->+ Sem r ()+annotated msg =+ send (Annotated msg)
lib/Polysemy/Log/Handle.hs view
@@ -4,7 +4,7 @@ import qualified Data.Text.IO as Text import System.IO (BufferMode (LineBuffering), Handle, hSetBuffering) -import Polysemy.Log.Data.DataLog (DataLog)+import Polysemy.Log.Effect.DataLog (DataLog) import Polysemy.Log.Log (interpretDataLog) -- |Interpret 'DataLog' by printing to the given handle, converting messages to 'Text' with the supplied function.
lib/Polysemy/Log/Level.hs view
@@ -1,8 +1,8 @@ -- |Description: Internal module Polysemy.Log.Level where -import qualified Polysemy.Log.Data.DataLog as DataLog-import Polysemy.Log.Data.DataLog (DataLog (DataLog, Local))+import qualified Polysemy.Log.Effect.DataLog as DataLog+import Polysemy.Log.Effect.DataLog (DataLog (DataLog, Local)) import qualified Polysemy.Log.Data.LogEntry as LogEntry import Polysemy.Log.Data.LogEntry (LogEntry) import qualified Polysemy.Log.Data.LogMessage as LogMessage
lib/Polysemy/Log/Log.hs view
@@ -6,11 +6,11 @@ import Polysemy.Time (GhcTime, interpretTimeGhc) import Polysemy.Log.Conc (interceptDataLogConc)-import Polysemy.Log.Data.DataLog (DataLog (DataLog, Local), dataLog)-import Polysemy.Log.Data.Log (Log (Log))+import Polysemy.Log.Effect.DataLog (DataLog (DataLog, Local), dataLog)+import Polysemy.Log.Effect.Log (Log (Log)) import Polysemy.Log.Data.LogEntry (LogEntry, annotate) import Polysemy.Log.Data.LogMessage (LogMessage)-import Polysemy.Log.Data.LogMetadata (LogMetadata (Annotated), annotated)+import Polysemy.Log.Effect.LogMetadata (LogMetadata (Annotated), annotated) -- |Interpret 'Log' into the intermediate internal effect 'LogMetadata'. interpretLogLogMetadata ::
lib/Polysemy/Log/Pure.hs view
@@ -1,7 +1,7 @@ -- |Description: Pure interpreters for 'Log'. module Polysemy.Log.Pure where -import Polysemy.Log.Data.Log (Log (Log))+import Polysemy.Log.Effect.Log (Log (Log)) import Polysemy.Log.Data.LogMessage (LogMessage) -- |Interpret 'Log' in terms of 'Output'.
lib/Polysemy/Log/Stderr.hs view
@@ -5,8 +5,8 @@ import Polysemy.Time (GhcTime, interpretTimeGhc) import System.IO (stderr) -import Polysemy.Log.Data.DataLog (DataLog)-import Polysemy.Log.Data.Log (Log)+import Polysemy.Log.Effect.DataLog (DataLog)+import Polysemy.Log.Effect.Log (Log) import Polysemy.Log.Data.LogEntry (LogEntry) import Polysemy.Log.Data.LogMessage (LogMessage) import Polysemy.Log.Data.Severity (Severity)
lib/Polysemy/Log/Stdout.hs view
@@ -5,8 +5,8 @@ import Polysemy.Time (GhcTime, interpretTimeGhc) import System.IO (stdout) -import Polysemy.Log.Data.DataLog (DataLog)-import Polysemy.Log.Data.Log (Log)+import Polysemy.Log.Effect.DataLog (DataLog)+import Polysemy.Log.Effect.Log (Log) import Polysemy.Log.Data.LogEntry (LogEntry) import Polysemy.Log.Data.LogMessage (LogMessage) import Polysemy.Log.Data.Severity (Severity)
polysemy-log.cabal view
@@ -5,21 +5,18 @@ -- see: https://github.com/sol/hpack name: polysemy-log-version: 0.6.0.1-synopsis: Polysemy Effects for Logging-description: See <https://hackage.haskell.org/package/polysemy-log/docs/Polysemy-Log.html>+version: 0.7.0.0+synopsis: Polysemy effects for logging+description: See https://hackage.haskell.org/package/polysemy-log/docs/Polysemy-Log.html category: Logging homepage: https://github.com/tek/polysemy-log#readme bug-reports: https://github.com/tek/polysemy-log/issues author: Torsten Schmits-maintainer: tek@tryp.io-copyright: 2021 Torsten Schmits+maintainer: hackage@tryp.io+copyright: 2022 Torsten Schmits license: BSD-2-Clause-Patent license-file: LICENSE build-type: Simple-extra-source-files:- readme.md- changelog.md source-repository head type: git@@ -30,12 +27,12 @@ Polysemy.Log Polysemy.Log.Atomic Polysemy.Log.Conc- Polysemy.Log.Data.DataLog- Polysemy.Log.Data.Log Polysemy.Log.Data.LogEntry Polysemy.Log.Data.LogMessage- Polysemy.Log.Data.LogMetadata Polysemy.Log.Data.Severity+ Polysemy.Log.Effect.DataLog+ Polysemy.Log.Effect.Log+ Polysemy.Log.Effect.LogMetadata Polysemy.Log.Format Polysemy.Log.Handle Polysemy.Log.Level@@ -59,6 +56,7 @@ DeriveFoldable DeriveFunctor DeriveGeneric+ DeriveLift DeriveTraversable DerivingStrategies DerivingVia@@ -91,6 +89,7 @@ RankNTypes RecordWildCards RecursiveDo+ RoleAnnotations ScopedTypeVariables StandaloneDeriving TemplateHaskell@@ -103,19 +102,21 @@ UndecidableInstances UnicodeSyntax ViewPatterns- ghc-options: -Wall -Wredundant-constraints -Wunused-packages -Widentities+ ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages build-depends: ansi-terminal >=0.10.3 , async- , base ==4.*- , incipit-core >=0.2- , polysemy >=1.5- , polysemy-conc >=0.7- , polysemy-time >=0.4+ , base >=4.12 && <5+ , incipit-core >=0.3+ , polysemy >=1.6+ , polysemy-conc >=0.9+ , polysemy-time >=0.5 , stm , time mixins: base hiding (Prelude)+ , incipit-core (IncipitCore as Prelude)+ , incipit-core hiding (IncipitCore) default-language: Haskell2010 test-suite polysemy-log-unit@@ -144,6 +145,7 @@ DeriveFoldable DeriveFunctor DeriveGeneric+ DeriveLift DeriveTraversable DerivingStrategies DerivingVia@@ -176,6 +178,7 @@ RankNTypes RecordWildCards RecursiveDo+ RoleAnnotations ScopedTypeVariables StandaloneDeriving TemplateHaskell@@ -188,18 +191,20 @@ UndecidableInstances UnicodeSyntax ViewPatterns- ghc-options: -Wall -Wredundant-constraints -Wunused-packages -Widentities -threaded -rtsopts -with-rtsopts=-N+ ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -threaded -rtsopts -with-rtsopts=-N build-depends:- base ==4.*- , incipit-core >=0.2- , polysemy >=1.5+ base >=4.12 && <5+ , incipit-core >=0.3+ , polysemy , polysemy-conc , polysemy-log , polysemy-plugin- , polysemy-test+ , polysemy-test >=0.6 , polysemy-time , tasty , time mixins: base hiding (Prelude)+ , incipit-core (IncipitCore as Prelude)+ , incipit-core hiding (IncipitCore) default-language: Haskell2010
− readme.md
@@ -1,6 +0,0 @@-A logging library for [Polysemy].--For docs, please visit [Hackage].--[Polysemy](https://hackage.haskell.org/package/polysemy)-[Hackage](https://hackage.haskell.org/package/polysemy-log)
test/Polysemy/Log/Test/ConcTest.hs view
@@ -8,15 +8,15 @@ import Polysemy.Log.Atomic (interpretDataLogAtomic) import Polysemy.Log.Conc (interceptDataLogConc)-import qualified Polysemy.Log.Data.DataLog as DataLog-import Polysemy.Log.Data.DataLog (DataLog)+import qualified Polysemy.Log.Effect.DataLog as DataLog+import Polysemy.Log.Effect.DataLog (DataLog) data Context = Context { context :: [Text], message :: Text }- deriving (Eq, Show)+ deriving stock (Eq, Show) prog :: Members [DataLog Context, GhcTime, AtomicState [Context]] r =>
test/Polysemy/Log/Test/DataLogTest.hs view
@@ -3,14 +3,14 @@ import Polysemy.Test (UnitTest, assertEq, runTestAuto) import Polysemy.Log.Atomic (interpretDataLogAtomic)-import qualified Polysemy.Log.Data.DataLog as DataLog-import Polysemy.Log.Data.DataLog (DataLog)+import qualified Polysemy.Log.Effect.DataLog as DataLog+import Polysemy.Log.Effect.DataLog (DataLog) data CustomLog = User Text | Fatal Int- deriving (Eq, Show)+ deriving stock (Eq, Show) prog :: Members [DataLog CustomLog, AtomicState [CustomLog]] r =>
test/Polysemy/Log/Test/ExampleTest.hs view
@@ -6,7 +6,7 @@ import qualified Polysemy.Log as Log import Polysemy.Log (DataLog, Log, interpretDataLogStdout, interpretLogStdoutConc)-import qualified Polysemy.Log.Data.DataLog as DataLog+import qualified Polysemy.Log.Effect.DataLog as DataLog progSimple :: Member Log r =>@@ -20,7 +20,7 @@ severity :: Text, message :: Text }- deriving (Eq, Show)+ deriving stock (Eq, Show) progData :: Member (DataLog Message) r =>
test/Polysemy/Log/Test/LocalTest.hs view
@@ -3,17 +3,17 @@ import Polysemy.Test (UnitTest, assertEq, runTestAuto) import Polysemy.Log.Atomic (interpretDataLogAtomic)-import qualified Polysemy.Log.Data.DataLog as DataLog-import Polysemy.Log.Data.DataLog (DataLog)-import Polysemy.Log.Data.LogMessage (LogMessage(LogMessage))-import Polysemy.Log.Data.Severity (Severity(Debug))+import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))+import Polysemy.Log.Data.Severity (Severity (Debug))+import qualified Polysemy.Log.Effect.DataLog as DataLog+import Polysemy.Log.Effect.DataLog (DataLog) data Context = Context { context :: [Text], message :: LogMessage }- deriving (Eq, Show)+ deriving stock (Eq, Show) log :: Member (DataLog Context) r =>
test/Polysemy/Log/Test/LogEntryTest.hs view
@@ -3,8 +3,8 @@ import Polysemy.Test (UnitTest, assertEq, runTestAuto) import Polysemy.Log.Atomic (interpretDataLogAtomic)-import qualified Polysemy.Log.Data.Log as Log-import Polysemy.Log.Data.Log (Log)+import qualified Polysemy.Log.Effect.Log as Log+import Polysemy.Log.Effect.Log (Log) import qualified Polysemy.Log.Data.LogEntry as LogEntry import Polysemy.Log.Data.LogEntry (LogEntry) import Polysemy.Log.Data.LogMessage (LogMessage (LogMessage))
test/Polysemy/Log/Test/SimpleTest.hs view
@@ -3,8 +3,8 @@ import Polysemy.Test (UnitTest, assertEq, runTestAuto) import Polysemy.Log.Atomic (interpretLogAtomic)-import qualified Polysemy.Log.Data.Log as Log-import Polysemy.Log.Data.Log (Log)+import qualified Polysemy.Log.Effect.Log as Log+import Polysemy.Log.Effect.Log (Log) import Polysemy.Log.Data.LogMessage (LogMessage(LogMessage)) import Polysemy.Log.Data.Severity (Severity(Crit, Debug))