module Bird.Logger where import Bird.BirdResponder import Bird.Reply import Bird.Request import Text.Printf import qualified Data.String.Utils as StringUtils (join) import System.CPUTime defaultLogger request router = do let logPrelude = "\n" ++ (show $ verb request) ++ " " ++ (show $ rawRequestUri request) start <- getCPUTime (reply, logMessages) <- runBirdResponder request router end <- getCPUTime let logEpilogue = (printf " Response code: %s" (show $ replyStatus reply)) ++ (printf "\n Response time: %0.3fs" (((fromIntegral (end - start)) / (10^12)) :: Double)) putStrLn $ (StringUtils.join "\n" ([logPrelude] ++ logMessages ++ [logEpilogue])) ++ "\n" return reply