on master help sign in
Merge pull request #466 from MHova/autoflush-handle

Autoflush handle

commite62e0ead9a86ac8d817a5bfc39f9a74f3ae13322 authorMichael Snoyman <michael@snoyman.com> dateWed 18 Nov 2015, 09:00 (11 years ago) parent3fcdb2fd28375e
1 file changed+5−4
wai-extra/Network/Wai/Middleware/RequestLogger.hs+5−4
wai-extra/Network/Wai/Middleware/RequestLogger.hs+5−4
@@ -19,10 +19,11 @@ module Network.Wai.Middleware.RequestLogger
1919 , IPAddrSource (..)
2020 ) where
2121
22−import System.IO (Handle, stdout)
22+import System.IO (Handle, hFlush, stdout)
2323import qualified Blaze.ByteString.Builder as B
2424import qualified Data.ByteString as BS
2525import Data.ByteString.Char8 (pack, unpack)
26+import Control.Monad (when)
2627import Control.Monad.IO.Class (liftIO)
2728import Network.Wai
2829 ( Request(..), requestBodyLength, RequestBodyLength(..)
@@ -91,13 +92,13 @@ mkRequestLogger :: RequestLoggerSettings -> IO Middleware
9192mkRequestLogger RequestLoggerSettings{..} = do
9293 let (callback, flusher) =
9394 case destination of
94− Handle h -> (BS.hPutStr h . logToByteString, return ())
95− Logger l -> (pushLogStr l, flushLogStr l)
95+ Handle h -> (BS.hPutStr h . logToByteString, when autoFlush (hFlush h))
96+ Logger l -> (pushLogStr l, when autoFlush (flushLogStr l))
9697 Callback c -> (c, return ())
9798 case outputFormat of
9899 Apache ipsrc -> do
99100 getdate <- getDateGetter flusher
100− apache <- initLogger ipsrc (LogCallback callback (return ())) getdate
101+ apache <- initLogger ipsrc (LogCallback callback flusher) getdate
101102 return $ apacheMiddleware apache
102103 Detailed useColors -> detailedMiddleware
103104 (\str -> callback str >> flusher)