http.log
log用来启用请求日志。请求日志也被称为访问日志。
语法
在没有参数的情况下,所有日志都使用{common}格式的日志格式记录到access.log:
log
自定义日志路径:
log file
- file 指相对于当前工作目录要创建(或附加到)日志文件的路径。有关如何指定输出位置的详细信息,请参阅日志目标。默认是access.log。
将日志限制为只针对某些请求或更改日志格式:
log path file [format]
- path 要记录日志的基本请求路径。
- file 相对于当前工作目录要创建(或追加)的日志文件。
- format 为要使用的日志格式;默认是{common}日志格式。
大的日志文件会自动轮转。你可以通过打开一个块自定义日志轮转或其他事情:
log path file [format] {
rotate_size mb
rotate_age days
rotate_keep count
rotate_compress
ipmask ipv4_mask [ipv6_mask]
except paths...
}
- rotate_size 是一个日志文件在滚动之前必须达到的兆字节大小。
- rotate_age 是保存轮转日志文件的天数。
- rotate_keep 是要保存的轮转日志文件的最大数量;旧的轮转日志文件则被删除。
- rotate_compress 是压缩轮转日志文件的选项。gzip是唯一支持的格式。
- ipmask 屏蔽某些IP地址屏蔽,以遵守公司或者法律的限制。第一个参数是IPv4地址的掩码,第二个参数是IPv6地址的掩码。IPv6掩码是可选的;如果只屏蔽IPv6,IPv4掩码可以是空字符串记号。
- except 设置哪些路径可以被免除日志记录。如果需要的话,每行可以指定多个路径(空格分隔),或者多次使用这个子指令。
日志格式
可以使用任何占位符值指定自定义日志格式。日志同时支持请求和响应占位符。
目前有两个预定义的格式。
- {common} (默认)
{remote} - {user} [{when}] \"{method} {uri} {proto}\" {status} {size}
- {combined} - 在{common}后面加上:
\"{>Referer}\" \"{>User-Agent}\"
日志目标
日志目标可以是下面列举的其中一种:
- 一个相对于当前工作目录的文件名
stdout
或stderr
,写入控制台syslog
写入本地系统日志(Windows除外)syslog://host[:port]
通过UDP写入到本地或远程syslog服务器syslog+udp://host[:port]
和上面一样syslog+tcp://host[:port]
通过TCP协议写入到本地或远程syslog服务器
日志轮转
日志有可能写满磁盘。为了缓和这一点,请求日志会根据下面的默认配置自动轮转(“滚动”):
rotate_size 100 # 当日志达到100M时轮转它
rotate_age 14 # 保持轮转日志文件14天
rotate_keep 10 # 保留最多10个旋转的日志文件
rotate_compress # 压缩gzip格式的轮转日志文件
您可以指定这些子指令来自定义日志滚动。
示例
将所有日志打印记录到access.log:
log
记录所有请求到标准输出:
log stdout
自定义日志格式:
log / stdout "{proto} Request: {method} {path}"
记录错误日志,自定义错误页面:
errors {
404 404.html # 页面找不到
500 500.html # 服务器内部错误
}
使用预定义格式:
log / stdout "{combined}"
使用日志轮转:
log requests.log {
rotate_size 50 # 50M以后轮转
rotate_age 90 # 保持轮转文件90天
rotate_keep 20 # 最多保持20个日志文件
rotate_compress # 压缩gzip格式的轮转日志文件
}
屏蔽(匿名化)IPv4地址和IPv6地址到只保留8bit地址:
log requests.log {
ipmask 255.255.0.0 ffff:ffff:ffff:ff00::
}