log4hs-0.9.0.0: bench/Main.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
import Criterion.Main
import Data.Aeson
#if MIN_VERSION_aeson(1, 4, 3)
import Data.Aeson.QQ.Simple (aesonQQ)
#else
import Data.Aeson.QQ (aesonQQ)
#endif
import Data.ByteString (pack)
import Data.ByteString.Lazy (unpack)
import Data.Maybe
import System.IO.Unsafe
import Logging.Config.Json
import Logging.Global
import Logging.Manager
main :: IO ()
main = run manager $ defaultMain $
[ bgroup "stderr" [ bench "simple" $ nfIO $ $(debug) "Stderr.Simple" msg100
, bench "normal" $ nfIO $ $(info) "Stderr.Normal" msg100
, bench "full" $ nfIO $ $(fatal) "Stderr.Full" msg100
]
, bgroup "file" [ bench "simple" $ nfIO $ $(debug) "File.Simple" msg100
, bench "normal" $ nfIO $ $(info) "File.Normal" msg100
, bench "full" $ nfIO $ $(fatal) "File.Full" msg100
]
]
msg100 :: String
msg100 = replicate 100 'W'
manager :: Manager
{-# NOINLINE manager #-}
manager = unsafePerformIO $ getManager $ pack $ unpack $ encode $
[aesonQQ|{
"disabled": false,
"catchUncaughtException": true,
"sinks": {
"Stderr.Simple": {
"handlers": ["stderr.simple"],
"propagate": false
},
"Stderr.Normal": {
"handlers": ["stderr.normal"],
"propagate": false
},
"Stderr.Full": {
"handlers": ["stderr.full"],
"propagate": false
},
"File.Simple": {
"handlers": ["file.simple"],
"propagate": false
},
"File.Normal": {
"handlers": ["file.normal"],
"propagate": false
},
"File.Full": {
"handlers": ["file.full"],
"propagate": false
}
},
"handlers": {
"stderr.simple": {
"type": "StreamHandler",
"stream": "stderr",
"level": "DEBUG",
"formatter": "simple"
},
"stderr.normal": {
"type": "StreamHandler",
"stream": "stderr",
"level": "INFO",
"formatter": "normal"
},
"stderr.full": {
"type": "StreamHandler",
"stream": "stderr",
"level": "ERROR",
"formatter": "full"
},
"file.simple": {
"type": "FileHandler",
"level": "DEBUG",
"formatter": "simple",
"file": "/tmp/log4hs/benchmark.simple.log"
},
"file.normal": {
"type": "FileHandler",
"level": "INFO",
"formatter": "normal",
"file": "/tmp/log4hs/benchmark.normal.log"
},
"file.full": {
"type": "FileHandler",
"level": "ERROR",
"formatter": "full",
"file": "/tmp/log4hs/benchmark.full.log"
}
},
"formatters": {
"simple": "{message}",
"normal": "{asctime:%Y-%m-%dT%H:%M:%S%6Q%z} - {level} - {logger}] {message}",
"full": "{asctime:%Y-%m-%dT%H:%M:%S%6Q%z} - {level} - {logger} - {pathname}:{lineno}] {message}"
}
}|]