packages feed

wai-logger 2.2.7 → 2.3.0

raw patch · 3 files changed

+54/−4 lines, 3 files

Files

Network/Wai/Logger.hs view
@@ -34,8 +34,13 @@   -- * High level functions     ApacheLogger   , withStdoutLogger+  , ServerPushLogger   -- * Creating a logger-  , ApacheLoggerActions(..)+  , ApacheLoggerActions+  , apacheLogger+  , serverpushLogger+  , logRotator+  , logRemover   , initLogger   -- * Types   , IPAddrSource(..)@@ -56,6 +61,7 @@ #endif import Control.Exception (bracket) import Control.Monad (void)+import Data.ByteString (ByteString) import Network.HTTP.Types (Status) import Network.Wai (Request) import System.Log.FastLogger@@ -85,12 +91,19 @@ -- | Apache style logger. type ApacheLogger = Request -> Status -> Maybe Integer -> IO () +-- | HTTP/2 server push logger in Apache style.+type ServerPushLogger = Request -> ByteString -> Integer -> IO ()++-- | Function set of Apache style logger. data ApacheLoggerActions = ApacheLoggerActions {+    -- | The Apache logger.     apacheLogger :: ApacheLogger+    -- | The HTTP/2 server push logger.+  , serverpushLogger :: ServerPushLogger     -- | This is obsoleted. Rotation is done on-demand.     --   So, this is now an empty action.   , logRotator :: IO ()-    -- | Removing resources relating Apache logger.+    -- | Removing resources relating to Apache logger.     --   E.g. flushing and deallocating internal buffers.   , logRemover :: IO ()   }@@ -102,7 +115,12 @@            -> IO ApacheLoggerActions initLogger ipsrc typ tgetter = do     (fl, cleanUp) <- newFastLogger typ-    return $ ApacheLoggerActions (apache fl ipsrc tgetter) (return ()) cleanUp+    return $ ApacheLoggerActions {+        apacheLogger     = apache fl ipsrc tgetter+      , serverpushLogger = serverpush fl ipsrc tgetter+      , logRotator       = return ()+      , logRemover       = cleanUp+      }  --- | Checking if a log file can be written if 'LogType' is 'LogFileNoRotate' or 'LogFile'. logCheck :: LogType -> IO ()@@ -119,6 +137,11 @@ apache cb ipsrc dateget req st mlen = do     zdata <- dateget     cb (apacheLogStr ipsrc zdata req st mlen)++serverpush :: (LogStr -> IO ()) -> IPAddrSource -> IO FormattedTime -> ServerPushLogger+serverpush cb ipsrc dateget req path size = do+    zdata <- dateget+    cb (serverpushLogStr ipsrc zdata req path size)  --------------------------------------------------------------- 
Network/Wai/Logger/Apache.hs view
@@ -3,6 +3,7 @@ module Network.Wai.Logger.Apache (     IPAddrSource(..)   , apacheLogStr+  , serverpushLogStr   ) where  #ifndef MIN_VERSION_base@@ -69,6 +70,32 @@     mua = requestHeaderUserAgent req #else     mr  = lookup "referer" $ requestHeaders req+    mua = lookup "user-agent" $ requestHeaders req+#endif++-- | HTTP/2 Push log format in the Apache style.+serverpushLogStr :: IPAddrSource -> FormattedTime -> Request -> ByteString -> Integer -> LogStr+serverpushLogStr ipsrc tmstr req path size =+      toLogStr (getSourceIP ipsrc req)+  <> " - - ["+  <> toLogStr tmstr+  <> "] \"PUSH "+  <> toLogStr path+  <> " HTTP/2\" 200 "+  <> toLogStr (show size)+  <> " \""+  <> toLogStr ref+  <> "\" \""+  <> toLogStr (fromMaybe "" mua)+  <> "\"\n"+  where+    ref  = rawPathInfo req+#if !MIN_VERSION_base(4,5,0)+    (<>) = mappend+#endif+#if MIN_VERSION_wai(3,2,0)+    mua = requestHeaderUserAgent req+#else     mua = lookup "user-agent" $ requestHeaders req #endif 
wai-logger.cabal view
@@ -1,5 +1,5 @@ Name:                   wai-logger-Version:                2.2.7+Version:                2.3.0 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3