Fast Logger

Run Settings
LanguageHaskell
Language Version
Run Command
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} module TestLogging ( module TestLogging ) where import qualified Control.Concurrent.Async as Async import Control.Monad (void) import Data.Monoid ((<>)) import System.Log.FastLogger as FL task :: Show a => LoggerSet -> a -> IO () task log i = pushLogStrLn log $ toLogStr ("hello world " ++ show i) -- putStrLn $ "task " ++ show i logT :: FL.ToLogStr msg => FL.TimedFastLogger -> msg -> IO () logT logger msg = logger $ \ft -> toLogStr ft <> toLogStr (": " :: String) <> toLogStr msg <> "\n" task' :: forall a. Show a => (FL.LogStr -> IO ()) -> a -> IO () task' logger i = do void $ logger (toLogStr ("hello world T " ++ show i)) putStr "" myTimeFormat :: TimeFormat myTimeFormat = "%Y-%m-%dT%H:%M:%S%z" main :: IO () main = do log <- FL.newStdoutLoggerSet 128 print =<< Async.mapConcurrently_ void [task log i | i <- [1..10]] FL.flushLogStr log timeCache <- FL.newTimeCache myTimeFormat (logger, cleanUp) <- FL.newTimedFastLogger timeCache (FL.LogStdout FL.defaultBufSize) let myLogger = void . logT logger void $ Async.mapConcurrently_ void [task' myLogger i | i <- [1..10]] cleanUp
Editor Settings
Theme
Key bindings
Full width
Lines