lager 0.1.0.1 → 0.2.0.0
raw patch · 4 files changed
+37/−37 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Lager: Msg :: Level -> Text -> Text -> Msg
+ Lager: Msg :: Level -> String -> String -> Msg
- Lager: [src] :: Msg -> Text
+ Lager: [src] :: Msg -> String
- Lager: [txt] :: Msg -> Text
+ Lager: [txt] :: Msg -> String
- Lager: logAlert :: Lager -> Text -> IO ()
+ Lager: logAlert :: Lager -> String -> IO ()
- Lager: logCrit :: Lager -> Text -> IO ()
+ Lager: logCrit :: Lager -> String -> IO ()
- Lager: logDebug :: Lager -> Text -> IO ()
+ Lager: logDebug :: Lager -> String -> IO ()
- Lager: logEmerg :: Lager -> Text -> IO ()
+ Lager: logEmerg :: Lager -> String -> IO ()
- Lager: logErr :: Lager -> Text -> IO ()
+ Lager: logErr :: Lager -> String -> IO ()
- Lager: logInfo :: Lager -> Text -> IO ()
+ Lager: logInfo :: Lager -> String -> IO ()
- Lager: logNotice :: Lager -> Text -> IO ()
+ Lager: logNotice :: Lager -> String -> IO ()
- Lager: logSTM :: Lager -> Level -> Text -> STM ()
+ Lager: logSTM :: Lager -> Level -> String -> STM ()
- Lager: logSub :: Text -> Lager -> Lager
+ Lager: logSub :: String -> Lager -> Lager
- Lager: logWarning :: Lager -> Text -> IO ()
+ Lager: logWarning :: Lager -> String -> IO ()
- Lager: newLager :: Text -> [Target] -> IO Lager
+ Lager: newLager :: String -> [Target] -> IO Lager
- Lager: newLagerSTM :: Text -> [Target] -> STM Lager
+ Lager: newLagerSTM :: String -> [Target] -> STM Lager
- Lager: withLager :: Text -> [Target] -> (Lager -> IO a) -> IO a
+ Lager: withLager :: String -> [Target] -> (Lager -> IO a) -> IO a
Files
- CHANGELOG.md +4/−0
- lager.cabal +1/−1
- lib/Lager.hs +32/−34
- test/Main.hs +0/−2
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for lager +## 0.2.0.0 -- 3-26-2026++* switch to `String` API+ ## 0.1.0.1 -- 3-26-2026 * Add instances to `Msg`
lager.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: lager-version: 0.1.0.1+version: 0.2.0.0 synopsis: Concurrent logging license: MIT license-file: LICENSE
lib/Lager.hs view
@@ -1,5 +1,4 @@-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE DeriveGeneric #-} -- | Concurrent Lager 🍺 --@@ -48,9 +47,7 @@ import Control.Monad import Data.Functor import Data.Ord-import Data.Text.Lazy (Text)-import qualified Data.Text.Lazy as T-import qualified Data.Text.Lazy.IO as T+import qualified Data.Text.Lazy as T import GHC.Generics import Prettyprinter import Prettyprinter.Render.Terminal@@ -58,7 +55,7 @@ -- | Logging handle data Lager = Lager- { nm :: Text -- source name+ { nm :: String -- source name , tg :: [Target] , wc :: TChan Msg -- write chan , rc :: [TChan Msg] -- read chans@@ -69,16 +66,16 @@ -- | Log message data Msg = Msg { lvl :: Level- , txt :: Text -- ^ message- , src :: Text -- ^ logger source+ , txt :: String -- ^ message+ , src :: String -- ^ logger source } deriving (Eq, Generic, Read, Show) -- | Acquire a new handle-newLager :: Text -> [Target] -> IO Lager+newLager :: String -> [Target] -> IO Lager newLager nm' = atomically . newLagerSTM nm' -- | Acquire a new handle in STM-newLagerSTM :: Text -> [Target] -> STM Lager+newLagerSTM :: String -> [Target] -> STM Lager newLagerSTM nm' tgt' = do wc' <- newBroadcastTChan Lager nm' tgt' wc'@@ -89,7 +86,7 @@ -- | Acquire a 'newLager', concurrently 'runLager', -- then finally 'drinkLager' if the body terminates -- or throws an exception.-withLager :: Text -> [Target] -> (Lager -> IO a) -> IO a+withLager :: String -> [Target] -> (Lager -> IO a) -> IO a withLager nm' tgt' k = do l <- newLager nm' tgt' either id id@@ -108,47 +105,47 @@ checkDrunk :: Lager -> STM () checkDrunk = check <=< readTVar . drunk -logDebug :: Lager -> Text -> IO ()+logDebug :: Lager -> String -> IO () logDebug l = lager l Debug -logInfo :: Lager -> Text -> IO ()+logInfo :: Lager -> String -> IO () logInfo l = lager l Info -logNotice :: Lager -> Text -> IO ()+logNotice :: Lager -> String -> IO () logNotice l = lager l Notice -logWarning :: Lager -> Text -> IO ()+logWarning :: Lager -> String -> IO () logWarning l = lager l Warning -logErr :: Lager -> Text -> IO ()+logErr :: Lager -> String -> IO () logErr l = lager l Err -logCrit :: Lager -> Text -> IO ()+logCrit :: Lager -> String -> IO () logCrit l = lager l Crit -logAlert :: Lager -> Text -> IO ()+logAlert :: Lager -> String -> IO () logAlert l = lager l Alert -logEmerg :: Lager -> Text -> IO ()+logEmerg :: Lager -> String -> IO () logEmerg l = lager l Emerg -- | Log text in IO-lager :: Lager -> Level -> Text -> IO ()+lager :: Lager -> Level -> String -> IO () lager l lvl' = atomically . logSTM l lvl' -- | Log text in STM-logSTM :: Lager -> Level -> Text -> STM ()+logSTM :: Lager -> Level -> String -> STM () logSTM l lvl' msg = do throwIfDrunk l writeTChan (wc l) $ Msg lvl' msg (nm l) -- | Extend the logger name-logSub :: Text -> Lager -> Lager+logSub :: String -> Lager -> Lager logSub nm' l = Lager nm'' [] (wc l) [] (drink l) (drunk l) where- nm'' | T.null nm' = nm l- | T.null (nm l) = nm'- | otherwise = nm l <> "|" <> nm'+ nm'' | null nm' = nm l+ | null (nm l) = nm'+ | otherwise = nm l <> "|" <> nm' -- | Stream log messages logStream :: Lager -> (IO Msg -> IO a) -> IO a@@ -215,17 +212,18 @@ withFile path WriteMode $ \hndl -> runHandle lgr hndl renderConsole l c -renderJournal :: Msg -> Text+renderJournal :: Msg -> String renderJournal msg =- "<" <> T.pack (show $ fromEnum $ lvl msg) <> "> " <> renderConsole msg+ "<" <> show (fromEnum $ lvl msg) <> "> " <> renderConsole msg -renderConsole :: Msg -> Text+renderConsole :: Msg -> String renderConsole msg- | T.null (src msg) = txt msg- | otherwise = "[" <> src msg <> "] " <> txt msg+ | null (src msg) = txt msg+ | otherwise = "[" <> src msg <> "] " <> txt msg -renderConsoleRGB :: [(Level, Color)] -> Msg -> Text+renderConsoleRGB :: [(Level, Color)] -> Msg -> String renderConsoleRGB m msg =+ T.unpack $ renderLazy $ layoutPretty defaultLayoutOptions $ annLevelColor (lvl msg) m $@@ -235,7 +233,7 @@ runHandle :: Lager -> Handle- -> (Msg -> Text)+ -> (Msg -> String) -> Level -> TChan Msg -> IO ()@@ -249,10 +247,10 @@ msgs <- listTChan c return $ mapM_ (logHandle hndl render l) msgs -logHandle :: Handle -> (Msg -> Text) -> Level -> Msg -> IO ()+logHandle :: Handle -> (Msg -> String) -> Level -> Msg -> IO () logHandle hndl render l msg | not (visible l msg) = return ()- | otherwise = T.hPutStrLn hndl $ render msg+ | otherwise = hPutStrLn hndl $ render msg listTChan :: TChan a -> STM [a] listTChan t = loop
test/Main.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE OverloadedStrings #-}- module Main (main) where import Lager