diff --git a/bench/Bench.hs b/bench/Bench.hs index 34ceb5038e666c193ad9d604825ae76d7adeabd1..bbb183f038ddb2a9bd0964d7b5bf34c584168479 100644 --- a/bench/Bench.hs +++ b/bench/Bench.hs @@ -6,15 +6,15 @@ module Main (main) where +import Criterion import Criterion.Main -import Criterion.Config import Data.Int import System.Logger.Message import qualified Data.ByteString.Lazy as L main :: IO () -main = defaultMainWith defaultConfig (return ()) +main = defaultMain [ bgroup "direct" [ bench "msg/8" (whnf (f False) 8) , bench "msg/16" (whnf (f False) 16) diff --git a/src/System/Logger.hs b/src/System/Logger.hs index 475477cd29b64e6f005229d7a074cffaa237d52d..5f38fcf34a2b49ab5f3e4d7cca474fe4eb149c60 100644 --- a/src/System/Logger.hs +++ b/src/System/Logger.hs @@ -52,13 +52,12 @@ module System.Logger import Prelude hiding (log) import Control.Applicative +import Control.AutoUpdate import Control.Monad import Control.Monad.IO.Class -import Data.ByteString (ByteString) import Data.Maybe (fromMaybe) import Data.Text (Text) import Data.UnixTime -import System.Date.Cache import System.Environment (lookupEnv) import System.Logger.Message as M import System.Logger.Settings @@ -69,7 +68,6 @@ data Logger = Logger { logger :: FL.LoggerSet , settings :: Settings , getDate :: IO (Msg -> Msg) - , closeDate :: Maybe DateCacheCloser } -- | Create a new 'Logger' with the given 'Settings'. @@ -83,21 +81,18 @@ new s = liftIO $ do l <- fmap (readNote "Invalid LOG_LEVEL") <$> lookupEnv "LOG_LEVEL" e <- fmap (readNote "Invalid LOG_NETSTR") <$> lookupEnv "LOG_NETSTR" g <- fn (output s) (fromMaybe (bufSize s) n) - c <- clockCache (format s) let s' = setLogLevel (fromMaybe (logLevel s) l) . setNetStrings (fromMaybe (netstrings s) e) $ s - return $ Logger g s' (maybe (return id) (liftM msg) (fst <$> c)) (snd <$> c) + Logger g s' <$> mkGetDate (format s) where fn StdOut = FL.newStdoutLoggerSet fn StdErr = FL.newStderrLoggerSet fn (Path p) = flip FL.newFileLoggerSet p - clockCache "" = return Nothing - clockCache f = Just <$> clockDateCacher (DateCacheConf getUnixTime (fmt f)) - - fmt :: DateFormat -> UnixTime -> IO ByteString - fmt d = return . formatUnixTimeGMT (template d) + mkGetDate "" = return (return id) + mkGetDate f = mkAutoUpdate defaultUpdateSettings + { updateAction = msg . formatUnixTimeGMT (template f) <$> getUnixTime } -- | Invokes 'new' with default settings and the given output as log sink. create :: MonadIO m => Output -> m Logger @@ -141,9 +136,7 @@ flush = liftIO . FL.flushLogStr . logger -- | Closes the logger. close :: MonadIO m => Logger -> m () -close g = liftIO $ do - fromMaybe (return ()) (closeDate g) - FL.rmLoggerSet (logger g) +close g = liftIO $ FL.rmLoggerSet (logger g) -- | Inspect this logger's threshold. level :: Logger -> Level diff --git a/tinylog.cabal b/tinylog.cabal index c23fba744d2c47b7afa5cc0305c041f3d80494ab..2b05008d65221c75ee70211051618d829e2e9f37 100644 --- a/tinylog.cabal +++ b/tinylog.cabal @@ -1,5 +1,5 @@ name: tinylog -version: 0.10.2 +version: 0.10.3 synopsis: Simplistic logging using fast-logger. author: Toralf Wittner maintainer: Toralf Wittner @@ -37,7 +37,7 @@ library build-depends: base == 4.* , bytestring >= 0.10.4 && < 0.11 - , date-cache == 0.3.* + , auto-update == 0.1.* , double-conversion == 0.2.* , fast-logger >= 2.1.4 && < 2.3 , text >= 0.11 && < 1.2 @@ -53,5 +53,5 @@ benchmark tinylog-bench build-depends: base == 4.* , bytestring - , criterion == 0.8.* + , criterion >= 1.0.0.2 && < 1.1 , tinylog