Commit 9c994df9 authored by Toralf Wittner's avatar Toralf Wittner
Browse files

Optimise and add `IsString` instance for `Builder`.

parent e5e8ee94
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
0.10
-----------------------------------------------------------------------------
- Introduce `Settings` module.

0.9
-----------------------------------------------------------------------------
- Add support for netstrings encoding.
+12 −12
Original line number Diff line number Diff line
@@ -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 #-}
+9 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
name:                 tinylog
version:              0.10
version:              0.10.1
synopsis:             Simplistic logging using fast-logger.
author:               Toralf Wittner
maintainer:           Toralf Wittner <tw@dtex.org>