on master help sign in
Merge pull request #757 from zoominsoftware/resp-size-in-custom-loggers
de74144Michael Snoyman
wai-extra/ChangeLog.md+5
@@ -1,5 +1,10 @@
1# Changelog for wai-extra
1# Changelog for wai-extra
2
2
3+## 3.0.26.1
4+
5+* When available, supply the response size to custom loggers
6+ [#757](https://github.com/yesodweb/wai/pull/757)
7+
3## 3.0.26
8## 3.0.26
4
9
5* Throw 413 for too large payload
10* Throw 413 for too large payload
wai-extra/Network/Wai/Middleware/RequestLogger.hs+4−4
@@ -118,8 +118,8 @@ apacheMiddleware ala app req sendResponse = app req $ \res -> do
118customMiddleware :: Callback -> IO ZonedDate -> OutputFormatter -> Middleware
118customMiddleware :: Callback -> IO ZonedDate -> OutputFormatter -> Middleware
119customMiddleware cb getdate formatter app req sendResponse = app req $ \res -> do
119customMiddleware cb getdate formatter app req sendResponse = app req $ \res -> do
120 date <- liftIO getdate
120 date <- liftIO getdate
121− -- We use Nothing for the response size since we generally don't know it
121+ let msize = contentLength (responseHeaders res)
122− liftIO $ cb $ formatter date req (responseStatus res) Nothing
122+ liftIO $ cb $ formatter date req (responseStatus res) msize
123 sendResponse res
123 sendResponse res
124
124
125customMiddlewareWithDetails :: Callback -> IO ZonedDate -> OutputFormatterWithDetails -> Middleware
125customMiddlewareWithDetails :: Callback -> IO ZonedDate -> OutputFormatterWithDetails -> Middleware
@@ -129,12 +129,12 @@ customMiddlewareWithDetails cb getdate formatter app req sendResponse = do
129 app req' $ \res -> do
129 app req' $ \res -> do
130 t1 <- getCurrentTime
130 t1 <- getCurrentTime
131 date <- liftIO getdate
131 date <- liftIO getdate
132− -- We use Nothing for the response size since we generally don't know it
132+ let msize = contentLength (responseHeaders res)
133 builderIO <- newIORef $ B.byteString ""
133 builderIO <- newIORef $ B.byteString ""
134 res' <- recordChunks builderIO res
134 res' <- recordChunks builderIO res
135 rspRcv <- sendResponse res'
135 rspRcv <- sendResponse res'
136 _ <- liftIO . cb .
136 _ <- liftIO . cb .
137− formatter date req' (responseStatus res') Nothing (t1 `diffUTCTime` t0) reqBody =<<
137+ formatter date req' (responseStatus res') msize (t1 `diffUTCTime` t0) reqBody =<<
138 readIORef builderIO
138 readIORef builderIO
139 return rspRcv
139 return rspRcv
140
140
wai-extra/wai-extra.cabal+1−1
@@ -1,5 +1,5 @@
1Name: wai-extra
1Name: wai-extra
2−Version: 3.0.26
2+Version: 3.0.26.1
3Synopsis: Provides some basic WAI handlers and middleware.
3Synopsis: Provides some basic WAI handlers and middleware.
4description:
4description:
5 Provides basic WAI handler and middleware functionality:
5 Provides basic WAI handler and middleware functionality: