@@ -37,7 +37,7 @@ import System.IO.Unsafe
3737
3838import Data.Default (Default (def))
3939import Network.Wai.Logger.Format (apacheFormat, IPAddrSource (..))
40−import System.Log.FastLogger.Date (DateRef, getDate, dateInit)
40+import System.Log.FastLogger.Date (getDate, dateInit, ZonedDate)
4141
4242data OutputFormat = Apache IPAddrSource
4343 | Detailed Bool -- ^ use colors?
@@ -69,24 +69,26 @@ instance Default RequestLoggerSettings where
6969
7070mkRequestLogger :: RequestLoggerSettings -> IO Middleware
7171mkRequestLogger RequestLoggerSettings{..} = do
72− (callback, dateref) <-
72+ (callback, mgetdate) <-
7373 case destination of
7474 Handle h -> fmap fromLogger $ mkLogger autoFlush h
7575 Logger l -> return $ fromLogger l
76− Callback c -> do
77− dateref <- dateInit
78− return (c, dateref)
76+ Callback c -> return (c, Nothing)
7977 case outputFormat of
80− Apache ipsrc -> return $ apacheMiddleware callback ipsrc dateref
78+ Apache ipsrc -> do
79+ getdate <-
80+ case mgetdate of
81+ Just x -> return x
82+ Nothing -> fmap getDate dateInit
83+ return $ apacheMiddleware callback ipsrc getdate
8184 Detailed useColors -> detailedMiddleware callback useColors
8285 where
83− fromLogger :: Logger -> (Callback, DateRef)
84− fromLogger l = (loggerPutStr l, loggerDateRef l)
86+ fromLogger l = (loggerPutStr l, Just $ loggerDate l)
8587
86−apacheMiddleware :: Callback -> IPAddrSource -> DateRef -> Middleware
87−apacheMiddleware cb ipsrc dateref app req = do
88+apacheMiddleware :: Callback -> IPAddrSource -> IO ZonedDate -> Middleware
89+apacheMiddleware cb ipsrc getdate app req = do
8890 res <- app req
89− date <- liftIO $ getDate dateref
91+ date <- liftIO getdate
9092 -- We use Nothing for the response size since we generally don't know it
9193 liftIO $ cb $ apacheFormat ipsrc date req (responseStatus res) Nothing
9294 return res