diff --git a/CHANGELOG.md b/CHANGELOG.md index 273be2ce55bd7e9e6839abdb4c0475007474ad72..d12c003f257af7663d9ea9792f47526e1a5553cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +0.10 +----------------------------------------------------------------------------- +- Introduce `Settings` module. + 0.9 ----------------------------------------------------------------------------- - Add support for netstrings encoding. diff --git a/src/System/Logger.hs b/src/System/Logger.hs index 60459d513180a499f1e39f0185f760850f0169a6..475477cd29b64e6f005229d7a074cffaa237d52d 100644 --- a/src/System/Logger.hs +++ b/src/System/Logger.hs @@ -68,7 +68,7 @@ import qualified System.Log.FastLogger as FL data Logger = Logger { logger :: FL.LoggerSet , settings :: Settings - , getDate :: Maybe DateCacheGetter + , getDate :: IO (Msg -> Msg) , closeDate :: Maybe DateCacheCloser } @@ -87,7 +87,7 @@ new s = liftIO $ do let s' = setLogLevel (fromMaybe (logLevel s) l) . setNetStrings (fromMaybe (netstrings s) e) $ s - return $ Logger g s' (fst <$> c) (snd <$> c) + return $ Logger g s' (maybe (return id) (liftM msg) (fst <$> c)) (snd <$> c) where fn StdOut = FL.newStdoutLoggerSet fn StdErr = FL.newStderrLoggerSet @@ -152,18 +152,18 @@ level = logLevel . settings putMsg :: MonadIO m => Logger -> Level -> (Msg -> Msg) -> m () putMsg g l f = liftIO $ do - d <- maybe (return id) (liftM msg) (getDate g) + d <- getDate g let n = netstrings $ settings g let x = delimiter $ settings g let s = nameMsg $ settings g - let m = render x n (d . msg (l2b l) . s . f) + let m = render x n (d . lmsg l . s . f) FL.pushLogStr (logger g) (FL.toLogStr m) - where - l2b :: Level -> ByteString - l2b Trace = "T" - l2b Debug = "D" - l2b Info = "I" - l2b Warn = "W" - l2b Error = "E" - l2b Fatal = "F" +lmsg :: Level -> (Msg -> Msg) +lmsg Trace = msg (val "T") +lmsg Debug = msg (val "D") +lmsg Info = msg (val "I") +lmsg Warn = msg (val "W") +lmsg Error = msg (val "E") +lmsg Fatal = msg (val "F") +{-# INLINE lmsg #-} diff --git a/src/System/Logger/Message.hs b/src/System/Logger/Message.hs index f95e47848602d8c3bab0b51565cbb49a139bd656..9d1cef5707c76345f977988260b67668019c93be 100644 --- a/src/System/Logger/Message.hs +++ b/src/System/Logger/Message.hs @@ -18,12 +18,14 @@ module System.Logger.Message ( ToBytes (..) , Msg + , Builder , msg , field , (.=) , (+++) , (~~) , val + , eval , render ) where @@ -31,6 +33,7 @@ import Data.ByteString (ByteString) import Data.Double.Conversion.Text import Data.Int import Data.Monoid +import Data.String import Data.Text (Text) import Data.Text.Encoding (encodeUtf8) import Data.Word @@ -50,6 +53,12 @@ instance Monoid Builder where mempty = Builder 0 mempty (Builder x a) `mappend` (Builder y b) = Builder (x + y) (a <> b) +instance IsString Builder where + fromString = bytes + +eval :: Builder -> L.ByteString +eval (Builder n b) = B.toLazyByteStringWith (B.safeStrategy n 256) L.empty b + -- | Convert some value to a 'Builder'. class ToBytes a where bytes :: a -> Builder diff --git a/tinylog.cabal b/tinylog.cabal index 1d2887490f65763398984d3b2ae94fb0f1491462..6ac35946df35155beeb4609fd26a59d306905feb 100644 --- a/tinylog.cabal +++ b/tinylog.cabal @@ -1,5 +1,5 @@ name: tinylog -version: 0.10 +version: 0.10.1 synopsis: Simplistic logging using fast-logger. author: Toralf Wittner maintainer: Toralf Wittner