log-base 0.9.0.0 → 0.9.1.0
raw patch · 3 files changed
+49/−2 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Log.Backend.LogList: clearLogList :: LogList -> IO ()
+ Log.Backend.LogList: data LogList
+ Log.Backend.LogList: getLogList :: LogList -> IO [LogMessage]
+ Log.Backend.LogList: instance GHC.Classes.Eq Log.Backend.LogList.LogList
+ Log.Backend.LogList: newLogList :: IO LogList
+ Log.Backend.LogList: putLogList :: LogList -> LogMessage -> IO ()
+ Log.Backend.LogList: withLogListLogger :: LogList -> (Logger -> IO r) -> IO r
Files
- CHANGELOG.md +3/−0
- log-base.cabal +3/−2
- src/Log/Backend/LogList.hs +43/−0
CHANGELOG.md view
@@ -1,3 +1,6 @@+# log-base-0.9.1.0 (2021-03-01)+* Add a `LogList` logger+ # log-base-0.9.0.0 (2020-09-07) * Always make data attached to a log message a json object * Add unliftio-core-0.2 compatiblity
log-base.cabal view
@@ -1,5 +1,5 @@ name: log-base-version: 0.9.0.0+version: 0.9.1.0 synopsis: Structured logging solution (base package) description: A library that provides a way to record structured log@@ -21,7 +21,7 @@ build-type: Simple cabal-version: >=1.10 extra-source-files: CHANGELOG.md, README.md-tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2+tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4 Source-repository head Type: git@@ -29,6 +29,7 @@ library exposed-modules: Log,+ Log.Backend.LogList, Log.Backend.StandardOutput, Log.Backend.StandardOutput.Bulk, Log.Backend.Text,
+ src/Log/Backend/LogList.hs view
@@ -0,0 +1,43 @@+-- | LogList logging backed.+module Log.Backend.LogList+ ( LogList+ , newLogList+ , getLogList+ , putLogList+ , clearLogList+ , withLogListLogger+ ) where++import Control.Concurrent.MVar+import System.IO+import Prelude++import Log.Data+import Log.Internal.Logger++newtype LogList = LogList (MVar [LogMessage])+ deriving Eq++-- | Create a new, empty list.+newLogList :: IO LogList+newLogList = LogList <$> newMVar []++-- | Retrieve messages stored in the list.+getLogList :: LogList -> IO [LogMessage]+getLogList (LogList ll) = reverse <$> readMVar ll++-- | Put a message into the list.+putLogList :: LogList -> LogMessage -> IO ()+putLogList (LogList ll) msg = modifyMVar_ ll $ \msgs -> return $! msg : msgs++-- | Clear the list.+clearLogList :: LogList -> IO ()+clearLogList (LogList ll) = modifyMVar_ ll . const $ return []++-- | Creates a logger that stores messages in the given 'LogList'.+withLogListLogger :: LogList -> (Logger -> IO r) -> IO r+withLogListLogger ll = withLogger $ Logger+ { loggerWriteMessage = putLogList ll+ , loggerWaitForWrite = return ()+ , loggerShutdown = return ()+ }