? my $ctx = $main::context; ? $_mt->wrapper_file("wrapper.mt", "Configure", "Access Log Directives")->(sub {
This document describes the configuration directives of the access_log handler.
$ctx->{directive}->( name => "access-log", levels => [ qw(global host path extension) ], see_also => render_mt(<<'EOT'),error-log
error-log.emit-request-errors
EOT
desc => q{The directive sets the path and optionally the format of the access log.},
)->(sub {
?>
If the supplied argument is a scalar, it is treated as the path of the log file, or if the value starts with a |
, it is treated as a command to which the log should be emitted.
If the supplied argument is a mapping, its path
property is considered as the path of the log file or the pipe command, and the format
property is treated as the format of the log file.
Starting from version 2.2, escape
property can be used to specify the escape sequence that should be used to emit unsafe octets.
Two forms of escape sequences are supported.
If apache
is specified as the value of the escape
property, unsafe octets are emitted in the form of \xNN
, where N is a hexadecimal number in lower case.
If json
is specified, unsafe octets are emitted in the form of \u00NN
.
apache
is the default escape method.
The list of format strings recognized by H2O is as follows.
Format String | Description | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%% | the percent sign | ||||||||||||||||||||||||||||||||||||||||||||||
%A | local address (e.g. 4.5.6.7 )
| ||||||||||||||||||||||||||||||||||||||||||||||
%b | size of the response body in bytes | ||||||||||||||||||||||||||||||||||||||||||||||
%H | request protocol as sent by the client (e.g. HTTP/1.1 )
| ||||||||||||||||||||||||||||||||||||||||||||||
%h | remote address (e.g. 1.2.3.4 )
| ||||||||||||||||||||||||||||||||||||||||||||||
%l | remote logname (always - )
| ||||||||||||||||||||||||||||||||||||||||||||||
%m | request method (e.g. GET , POST )
| ||||||||||||||||||||||||||||||||||||||||||||||
%p | local port (%{local}p is a synonym that is supported since version 2.2)
| ||||||||||||||||||||||||||||||||||||||||||||||
%{remote}p | remote port (since version 2.2) | ||||||||||||||||||||||||||||||||||||||||||||||
%q | query string (? is prepended if exists, otherwise an empty string)
| ||||||||||||||||||||||||||||||||||||||||||||||
%r | request line (e.g. GET / HTTP/1.1 )
| ||||||||||||||||||||||||||||||||||||||||||||||
%s | status code sent to client (e.g. 200 )
| ||||||||||||||||||||||||||||||||||||||||||||||
%<s | status code received from upstream (or initially generated) | ||||||||||||||||||||||||||||||||||||||||||||||
%t | time when the request was received in format: [02/Jan/2006:15:04:05 -0700]
| ||||||||||||||||||||||||||||||||||||||||||||||
%{FORMAT}t | time when the request was received using the specified format. FORMAT should be an argument to strftime , or one of:
%{%Y/%m/%d:%H:%M:%S}t.%{msec_frac}t , which results in a timestamp like 2006-01-02:15:04:05.000 .
| ||||||||||||||||||||||||||||||||||||||||||||||
%U | requested URL path, not including the query string | ||||||||||||||||||||||||||||||||||||||||||||||
%u | remote user if the request was authenticated (always - )
| ||||||||||||||||||||||||||||||||||||||||||||||
%V | requested server name (or the default server name if not specified by the client) | ||||||||||||||||||||||||||||||||||||||||||||||
%v | canonical server name | ||||||||||||||||||||||||||||||||||||||||||||||
%{VARNAME}e | request environment variable (since version 2.3; see Logging Arbitrary Variable) | ||||||||||||||||||||||||||||||||||||||||||||||
%{HEADERNAME}i | value of the given request header (e.g. %{user-agent}i )
| ||||||||||||||||||||||||||||||||||||||||||||||
%{HEADERNAME}o | value of the given response header sent to client (e.g. %{set-cookie}o )
| ||||||||||||||||||||||||||||||||||||||||||||||
%<{HEADERNAME}o | value of the response header received from upstream (or initially generated) | ||||||||||||||||||||||||||||||||||||||||||||||
%{NAME}x | various extensions. NAME must be one listed in the following tables. A dash (- ) is emitted if the directive is not applicable to the request being logged.
|
The default format is %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i"
, a.k.a. the NCSA extended/combined log format.
Note that you may need to quote (and escape) the format string as required by YAML (see Yaml Cookbook).
? }) ? })