packages feed

wai-logger 0.1.4 → 0.2.0

raw patch · 4 files changed

+29/−127 lines, 4 filesdep −old-localedep −timedep −unixdep ~fast-loggerdep ~http-typesdep ~wai

Dependencies removed: old-locale, time, unix

Dependency ranges changed: fast-logger, http-types, wai

Files

Network/Wai/Logger.hs view
@@ -2,7 +2,7 @@  -- | Logging system for WAI applications. ----- High level sample code:+-- Sample code: -- -- > {-# LANGUAGE OverloadedStrings #-} -- > module Main where@@ -14,51 +14,17 @@ -- > import Network.Wai -- > import Network.Wai.Handler.Warp -- > import Network.Wai.Logger--- > import System.IO -- > -- > main :: IO () -- > main = do--- >     logger <- stdoutApacheLoggerInit FromSocket--- >     run 3000 $ logapp logger+-- >     aplogger <- stdoutApacheLoggerInit FromSocket True+-- >     run 3000 $ logapp aplogger -- > -- > 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 ()--- > main = do--- >     dref <- dateInit--- >     run 3000 $ logapp dref--- >--- > logapp :: DateRef -> Application--- > logapp dref req = do--- >     date <- liftIO $ getDate dref+-- > logapp aplogger req = do -- >     let status = status200 -- >         len = 4--- >     liftIO $ hPutLogStr stdout $ apacheFormat FromSocket date req status (Just len)--- >     liftIO $ hFlush stdout+-- >     liftIO $ aplogger req status (Just len) -- >     return $ ResponseBuilder status -- >         [("Content-Type", "text/plain") -- >         ,("Content-Length", pack (show len))]@@ -68,14 +34,12 @@     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@@ -85,11 +49,15 @@ type ApacheLogger = Request -> Status -> Maybe Integer -> IO ()  -- | Obtaining Apache style logger to stdout-stdoutApacheLoggerInit :: IPAddrSource -> IO ApacheLogger-stdoutApacheLoggerInit ipsrc = stdoutLogger ipsrc <$> dateInit+stdoutApacheLoggerInit :: IPAddrSource+                       -> Bool -- ^ Automatically flush on each logging?+                       -> IO ApacheLogger+stdoutApacheLoggerInit ipsrc autoFlash =+    stdoutLogger ipsrc <$> mkLogger autoFlash stdout -stdoutLogger :: IPAddrSource -> DateRef -> ApacheLogger-stdoutLogger ipsrc dateref req status msiz =-    getDate dateref >>= hPutLogStr stdout . logmsg >> hFlush stdout+stdoutLogger :: IPAddrSource -> Logger -> ApacheLogger+stdoutLogger ipsrc logger req status msiz = do+    date <- loggerDate logger+    loggerPutStr logger $ logmsg date   where     logmsg date = apacheFormat ipsrc date req status msiz
− Network/Wai/Logger/Date.hs
@@ -1,63 +0,0 @@-{-# LANGUAGE CPP #-}--module Network.Wai.Logger.Date (-    ZonedDate-  , DateRef-  , dateInit-  , getDate-  ) where--import Control.Applicative-import Data.ByteString (ByteString)-import qualified Data.ByteString.Char8 as BS-import Data.IORef-import Data.Time-import System.Locale-#if WINDOWS-#define TIME UTCTime-#define GETTIME getCurrentTime-#else-import System.Posix (EpochTime, epochTime)-import Data.Time.Clock.POSIX-#define TIME EpochTime-#define GETTIME epochTime-#endif---- | A type for zoned date.-type ZonedDate = ByteString--data DateCache = DateCache {-    unixTime :: !TIME-  , zonedDate :: !ZonedDate-  }---- | Reference to the 'ZonedDate' cache.-newtype DateRef = DateRef (IORef DateCache)---- | Getting 'ZonedDate' from the 'ZonedDate' cache.-getDate :: DateRef -> IO ZonedDate-getDate (DateRef ref) = do-    newEt <- GETTIME-    cache <- readIORef ref-    let oldEt = unixTime cache-    if oldEt == newEt then-        return $ zonedDate cache-      else do-        newCache <- newDate newEt-        writeIORef ref newCache-        return $ zonedDate newCache--newDate :: TIME -> IO DateCache-newDate et = DateCache et . format <$> toZonedTime et-  where-    toZonedTime = utcToLocalZonedTime . toUTC-#if WINDOWS-    toUTC = id-#else-    toUTC = posixSecondsToUTCTime . realToFrac-#endif-    format = BS.pack . formatTime defaultTimeLocale "%d/%b/%Y:%T %z"---- | Initializing the 'ZonedDate' cache.-dateInit :: IO DateRef-dateInit = DateRef <$> (GETTIME >>= newDate >>= newIORef)
Network/Wai/Logger/Format.hs view
@@ -9,16 +9,16 @@  import Blaze.ByteString.Builder import Blaze.ByteString.Builder.Char8-import Data.ByteString.Char8 ()+import Data.ByteString.Char8 (ByteString) import Data.CaseInsensitive import Data.List import Data.Maybe import Data.Monoid import Network.HTTP.Types import Network.Wai-import Network.Wai.Logger.Date import Network.Wai.Logger.Utils import System.Log.FastLogger+import System.Log.FastLogger.Date  {-| Source from which the IP source address of the client is obtained. -}@@ -79,7 +79,7 @@     bs = fromByteString     (+++) = mappend -lookupRequestField' :: CI Ascii -> Request -> Ascii+lookupRequestField' :: CI ByteString -> Request -> ByteString lookupRequestField' k req = fromMaybe "" . lookup k $ requestHeaders req  getSourceIP :: IPAddrSource -> Request -> LogStr@@ -90,7 +90,7 @@ getSourceIP' FromSocket = fromString . showSockAddr . remoteHost getSourceIP' FromHeader = fromByteString . getSource -getSource :: Request -> Ascii+getSource :: Request -> ByteString getSource req = addr   where     maddr = find (\x -> fst x `elem` ["x-real-ip", "x-forwarded-for"]) hdrs
wai-logger.cabal view
@@ -1,5 +1,5 @@ Name:                   wai-logger-Version:                0.1.4+Version:                0.2.0 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3@@ -10,22 +10,19 @@ Cabal-Version:          >= 1.6 Build-Type:             Simple library-  if impl(ghc >= 6.12)-    GHC-Options:        -Wall -fno-warn-unused-do-bind-  else-    GHC-Options:        -Wall+  GHC-Options:          -Wall   Exposed-Modules:      Network.Wai.Logger-                        Network.Wai.Logger.Date                         Network.Wai.Logger.Format                         Network.Wai.Logger.Utils-  Build-Depends:        base >= 4 && < 5, time, old-locale,-                        bytestring, blaze-builder,-                        wai, fast-logger, http-types, case-insensitive,-                        network, byteorder-  if os(windows)-    cpp-options: -DWINDOWS-  else-    build-depends: unix+  Build-Depends:        base >= 4 && < 5+                      , blaze-builder+                      , byteorder+                      , bytestring+                      , case-insensitive+                      , fast-logger >= 0.2+                      , http-types+                      , network+                      , wai Source-Repository head   Type:                 git   Location:             git://github.com/kazu-yamamoto/logger.git