Logging¶
Hypercorn has two loggers, an access logger and an error logger. By
default neither will actively log. The special value of - can be
used as the logging target in order to log to stdout and stderr
respectively. Any other value is considered a filepath to target.
Configuring access logs¶
The access log format can be configured by specifying the atoms (see
below) to include in a specific format. By default hypercorn will
choose %(h)s %(S)s %(r)s %(s)s %(b)s %(D)s as the format. The
configuration variable access_log_format specifies the format
used.
Access log atoms¶
The following atoms, a superset of those in Gunicorn, are available for use.
| Identifier | Description |
|---|---|
| h | remote address |
| l | '-' |
| u | user name |
| t | date of the request |
| r | status line (e.g. GET / h11) |
| m | request method |
| U | URL path without query string |
| q | query string |
| H | protocol |
| s | status |
| S | scheme {http, https, ws, wss} |
| B | response length |
| b | response length or '-' (CLF format) |
| f | referer |
| a | user agent |
| T | request time in seconds |
| D | request time in microseconds |
| L | request time in decimal seconds |
| p | process ID |
| {Header}i | request header |
| {Header}o | response header |
| {Variable}e | environment variable |
Customising the access logger¶
The acces logger class can be customised by changing the
access_logger_class attribute of the Config class. This is
only possible when using the python based configuration file. The
hypercorn.logging.AccessLogger class is used by default.