wai-logger 0.1.2 → 0.1.3
raw patch · 4 files changed
+58/−7 lines, 4 filesdep ~fast-loggerdep ~wai
Dependency ranges changed: fast-logger, wai
Files
- Network/Wai/Logger.hs +52/−2
- Network/Wai/Logger/Date.hs +1/−2
- Network/Wai/Logger/Utils.hs +0/−1
- wai-logger.cabal +5/−2
Network/Wai/Logger.hs view
@@ -2,7 +2,7 @@ -- | Logging system for WAI applications. ----- Sample code:+-- High level sample code: -- -- > {-# LANGUAGE OverloadedStrings #-} -- > module Main where@@ -15,6 +15,36 @@ -- > import Network.Wai.Handler.Warp -- > import Network.Wai.Logger -- > import System.IO+-- >+-- > main :: IO ()+-- > main = do+-- > logger <- stdoutApacheLoggerInit FromSocket+-- > run 3000 $ logapp logger+-- >+-- > logapp :: ApacheLogger -> Application+-- > logapp logger req = do+-- > let status = status200+-- > len = 4+-- > liftIO $ logger req status (Just len)+-- > liftIO $ hFlush stdout+-- > return $ ResponseBuilder status+-- > [("Content-Type", "text/plain")+-- > ,("Content-Length", pack (show len))]+-- > $ fromByteString "PONG"+--+-- Low level sample code:+--+-- > {-# LANGUAGE OverloadedStrings #-}+-- > module Main where+-- >+-- > import Blaze.ByteString.Builder (fromByteString)+-- > import Control.Monad.IO.Class (liftIO)+-- > import Data.ByteString.Char8+-- > import Network.HTTP.Types (status200)+-- > import Network.Wai+-- > import Network.Wai.Handler.Warp+-- > import Network.Wai.Logger+-- > import System.IO -- > import System.Log.FastLogger -- > -- > main :: IO ()@@ -35,12 +65,32 @@ -- > $ fromByteString "PONG" module Network.Wai.Logger (- module Network.Wai.Logger.Format+ ApacheLogger+ , stdoutApacheLoggerInit+ , module Network.Wai.Logger.Format , module Network.Wai.Logger.Date , module Network.Wai.Logger.Utils ) where +import Control.Applicative+import Network.HTTP.Types+import Network.Wai import Network.Wai.Logger.Date import Network.Wai.Logger.Format import Network.Wai.Logger.Utils+import System.IO+import System.Log.FastLogger++-- | Apache style logger for WAI+type ApacheLogger = Request -> Status -> Maybe Integer -> IO ()++-- | Obtaining Apache style logger to stdout+stdoutApacheLoggerInit :: IPAddrSource -> IO ApacheLogger+stdoutApacheLoggerInit ipsrc = stdoutLogger ipsrc <$> dateInit++stdoutLogger :: IPAddrSource -> DateRef -> ApacheLogger+stdoutLogger ipsrc dateref req status msiz =+ getDate dateref >>= hPutLogStr stdout . logmsg+ where+ logmsg date = apacheFormat ipsrc date req status msiz
Network/Wai/Logger/Date.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE DoAndIfThenElse, BangPatterns #-} {-# LANGUAGE CPP #-} module Network.Wai.Logger.Date (@@ -43,7 +42,7 @@ let oldEt = unixTime cache if oldEt == newEt then return $ zonedDate cache- else do+ else do newCache <- newDate newEt writeIORef ref newCache return $ zonedDate newCache
Network/Wai/Logger/Utils.hs view
@@ -51,4 +51,3 @@ showSockAddr (SockAddrInet6 _ _ (0,0,0,1) _) = "::1" showSockAddr (SockAddrInet6 _ _ addr6 _) = showIPv6 addr6 showSockAddr _ = "unknownSocket"-
wai-logger.cabal view
@@ -1,5 +1,5 @@ Name: wai-logger-Version: 0.1.2+Version: 0.1.3 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3@@ -10,7 +10,10 @@ Cabal-Version: >= 1.6 Build-Type: Simple library- GHC-Options: -Wall -fno-warn-unused-do-bind+ if impl(ghc >= 6.12)+ GHC-Options: -Wall -fno-warn-unused-do-bind+ else+ GHC-Options: -Wall Exposed-Modules: Network.Wai.Logger Network.Wai.Logger.Date Network.Wai.Logger.Format