Safe Haskell | Safe-Infered |
---|
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"
- type ApacheLogger = Request -> Status -> Maybe Integer -> IO ()
- stdoutApacheLoggerInit :: IPAddrSource -> IO ApacheLogger
- module Network.Wai.Logger.Format
- module Network.Wai.Logger.Date
- module Network.Wai.Logger.Utils
Documentation
stdoutApacheLoggerInit :: IPAddrSource -> IO ApacheLoggerSource
Obtaining Apache style logger to stdout
module Network.Wai.Logger.Format
module Network.Wai.Logger.Date
module Network.Wai.Logger.Utils