Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- logStdout :: Middleware
- logStdoutDev :: Middleware
- mkRequestLogger :: RequestLoggerSettings -> IO Middleware
- data RequestLoggerSettings
- defaultRequestLoggerSettings :: RequestLoggerSettings
- outputFormat :: RequestLoggerSettings -> OutputFormat
- autoFlush :: RequestLoggerSettings -> Bool
- destination :: RequestLoggerSettings -> Destination
- data OutputFormat
- data ApacheSettings
- defaultApacheSettings :: ApacheSettings
- setApacheIPAddrSource :: IPAddrSource -> ApacheSettings -> ApacheSettings
- setApacheRequestFilter :: (Request -> Response -> Bool) -> ApacheSettings -> ApacheSettings
- setApacheUserGetter :: (Request -> Maybe ByteString) -> ApacheSettings -> ApacheSettings
- data DetailedSettings = DetailedSettings {
- useColors :: Bool
- mModifyParams :: Maybe (Param -> Maybe Param)
- mFilterRequests :: Maybe (Request -> Response -> Bool)
- mPrelogRequests :: Bool
- defaultDetailedSettings :: DetailedSettings
- type OutputFormatter = ZonedDate -> Request -> Status -> Maybe Integer -> LogStr
- type OutputFormatterWithDetails = ZonedDate -> Request -> Status -> Maybe Integer -> NominalDiffTime -> [ByteString] -> Builder -> LogStr
- type OutputFormatterWithDetailsAndHeaders = ZonedDate -> Request -> Status -> Maybe Integer -> NominalDiffTime -> [ByteString] -> Builder -> [Header] -> LogStr
- data Destination
- type Callback = LogStr -> IO ()
- data IPAddrSource
Basic stdout logging
logStdout :: Middleware Source #
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
.
Create more versions
mkRequestLogger :: RequestLoggerSettings -> IO Middleware Source #
Create the Middleware
using the given RequestLoggerSettings
Since: 1.3.0
Settings type
data RequestLoggerSettings Source #
Settings for the request logger.
Sets what which format,
outputFormat
, autoFlush
, and destination
are record fields
for the record type RequestLoggerSettings
, so they can be used to
modify settings values using record syntax.
Since: 1.3.0
Instances
Default RequestLoggerSettings Source # | DO NOT USE THIS INSTANCE!
Please use This instance will be removed in a future major release. |
Defined in Network.Wai.Middleware.RequestLogger |
defaultRequestLoggerSettings :: RequestLoggerSettings Source #
Default RequestLoggerSettings
.
Use this to create RequestLoggerSettings
, and use the
accompanying fields to edit these settings.
Since: 3.1.8
Settings fields
outputFormat :: RequestLoggerSettings -> OutputFormat Source #
Default value: Detailed True
.
Since: 1.3.0
autoFlush :: RequestLoggerSettings -> Bool Source #
Only applies when using the Destination
constructor for destination
.
Default value: True
.
Since: 1.3.0
destination :: RequestLoggerSettings -> Destination Source #
Default: Handle stdout
.
Since: 1.3.0
More settings
data OutputFormat Source #
The logging format.
Since: 1.3.0
data ApacheSettings Source #
Settings for the ApacheWithSettings
OutputFormat
. This is purposely kept as an abstract data
type so that new settings can be added without breaking backwards
compatibility. In order to create an ApacheSettings
value, use defaultApacheSettings
and the various 'setApache' functions to modify individual fields. For example:
setApacheIPAddrSource FromHeader defaultApacheSettings
Since: 3.1.8
setApacheIPAddrSource :: IPAddrSource -> ApacheSettings -> ApacheSettings Source #
Where to take IP addresses for clients from. See IPAddrSource
for more information.
Default value: FromSocket
Since: 3.1.8
setApacheRequestFilter :: (Request -> Response -> Bool) -> ApacheSettings -> ApacheSettings Source #
Function that allows you to filter which requests are logged, based on the request and response
Default: log all requests
Since: 3.1.8
setApacheUserGetter :: (Request -> Maybe ByteString) -> ApacheSettings -> ApacheSettings Source #
Function that allows you to get the current user from the request, which will then be added in the log.
Default: return no user
Since: 3.1.8
data DetailedSettings Source #
Settings for the Detailed
OutputFormat
.
mModifyParams
allows you to pass a function to hide confidential
information (such as passwords) from the logs. If result is Nothing
, then
the parameter is hidden. For example:
> myformat = Detailed True (Just hidePasswords)
> where hidePasswords p@(k,v) = if k = "password" then (k, "***REDACTED***") else p
mFilterRequests
allows you to filter which requests are logged, based on
the request and response.
Since: 3.1.3
DetailedSettings | |
|
Instances
Default DetailedSettings Source # | DO NOT USE THIS INSTANCE!
Please use This instance will be removed in a future major version. |
Defined in Network.Wai.Middleware.RequestLogger def :: DetailedSettings # |
defaultDetailedSettings :: DetailedSettings Source #
Default DetailedSettings
Uses colors, but doesn't modify nor filter anything. Also doesn't prelog requests.
Since: 3.1.16
type OutputFormatterWithDetails = ZonedDate -> Request -> Status -> Maybe Integer -> NominalDiffTime -> [ByteString] -> Builder -> LogStr Source #
type OutputFormatterWithDetailsAndHeaders Source #
= ZonedDate | When the log message was generated |
-> Request | The WAI request |
-> Status | HTTP status code |
-> Maybe Integer | Response size |
-> NominalDiffTime | Duration of the request |
-> [ByteString] | The request body |
-> Builder | Raw response |
-> [Header] | The response headers |
-> LogStr |
Same as OutputFormatterWithDetails
but with response headers included
This is useful if you wish to include arbitrary application data in your logs, e.g., an authenticated user ID, which you would set in a response header in your application and retrieve in the log formatter.
Since: 3.0.27
data Destination Source #
Where to send the logs to.
Since: 1.3.0
data IPAddrSource #
Source from which the IP source address of the client is obtained.
FromSocket | From the peer address of the HTTP connection. |
FromHeader | From This picks either If the |
FromHeaderCustom [HeaderName] | From a custom HTTP header, useful in proxied environment. The header value will be assumed to be a comma-separated list of IP addresses. The value will be parsed, and the left-most IP address will be used (which is mostly likely to be the actual client IP address). Note that this still works as expected for a single IP address. |
FromFallback | Just like |
FromRequest (Request -> ByteString) | This gives you the most flexibility to figure out the IP source address
from the |