wai-logger-0.1.4: A logging system for WAI

Safe HaskellSafe-Infered

Network.Wai.Logger

Description

Logging system for WAI applications.

High 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

 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 ()
 main = do
     dref <- dateInit
     run 3000 $ logapp dref

 logapp :: DateRef -> Application
 logapp dref req = do
     date <- liftIO $ getDate dref
     let status = status200
         len = 4
     liftIO $ hPutLogStr stdout $ apacheFormat FromSocket date req status (Just len)
     liftIO $ hFlush stdout
     return $ ResponseBuilder status
         [("Content-Type", "text/plain")
         ,("Content-Length", pack (show len))]
         $ fromByteString "PONG"

Synopsis

Documentation

type ApacheLogger = Request -> Status -> Maybe Integer -> IO ()Source

Apache style logger for WAI

stdoutApacheLoggerInit :: IPAddrSource -> IO ApacheLoggerSource

Obtaining Apache style logger to stdout