Network.Wai.Middleware.RequestLogger

wai-extra-3.0.16.1: Provides some basic WAI handlers and middleware.

Safe Haskell | None
Language | Haskell2010

Network.Wai.Middleware.RequestLogger

Contents

- Basic stdout logging
- Create more versions

Synopsis

- logStdout :: Middleware
- logStdoutDev :: Middleware
- mkRequestLogger :: RequestLoggerSettings -> IO Middleware
- data RequestLoggerSettings
- outputFormat :: RequestLoggerSettings -> OutputFormat
- autoFlush :: RequestLoggerSettings -> Bool
- destination :: RequestLoggerSettings -> Destination
- data OutputFormat
  - = Apache IPAddrSource
  - | Detailed Bool
  - | CustomOutputFormat OutputFormatter
  - | CustomOutputFormatWithDetails OutputFormatterWithDetails
- type OutputFormatter = ZonedDate -> Request -> Status -> Maybe Integer -> LogStr
- type OutputFormatterWithDetails = ZonedDate -> Request -> Status -> Maybe Integer -> NominalDiffTime -> [ByteString] -> Builder -> LogStr
- data Destination
  - = Handle Handle
  - | Logger LoggerSet
  - | Callback Callback
- type Callback = LogStr -> IO ()
- data IPAddrSource :: *
  - = FromSocket
  - | FromHeader
  - | FromFallback

# Basic stdout logging

logStdout :: Middleware #

Production request logger middleware.

This uses the `Apache` logging format, and takes IP addresses for clients from the socket (see `IPAddrSource` for more information). It logs to `stdout`.

logStdoutDev :: Middleware #

Development request logger middleware.

This uses the `Detailed` `True` logging format and logs to `stdout`.

# Create more versions

mkRequestLogger :: RequestLoggerSettings -> IO Middleware #

data RequestLoggerSettings #

`RequestLoggerSettings` is an instance of Default. See Data.Default for more information.

`outputFormat`, `autoFlush`, and `destination` are record fields for the record type `RequestLoggerSettings`, so they can be used to modify settings values using record syntax.

Instances

Default RequestLoggerSettings # |
Methods def :: RequestLoggerSettings #

outputFormat :: RequestLoggerSettings -> OutputFormat #

Default value: `Detailed` `True`.

autoFlush :: RequestLoggerSettings -> Bool #

Only applies when using the `Handle` constructor for `destination`.

Default value: `True`.

destination :: RequestLoggerSettings -> Destination #

Default: `Handle` `stdout`.

data OutputFormat #

Constructors

Apache IPAddrSource |
Detailed Bool | use colors?
CustomOutputFormat OutputFormatter |
CustomOutputFormatWithDetails OutputFormatterWithDetails |

type OutputFormatter = ZonedDate -> Request -> Status -> Maybe Integer -> LogStr #

type OutputFormatterWithDetails = ZonedDate -> Request -> Status -> Maybe Integer -> NominalDiffTime -> [ByteString] -> Builder -> LogStr #

data Destination #

Constructors

Handle Handle |
Logger LoggerSet |
Callback Callback |

type Callback = LogStr -> IO () #

data IPAddrSource :: * #

Source from which the IP source address of the client is obtained.

Constructors

FromSocket | From the peer address of the HTTP connection.
FromHeader | From X-Real-IP: or X-Forwarded-For: in the HTTP header.
FromFallback | From the peer address if header is not found.