@@ -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)