日志 ###
该模块以指定格式记录请求日志。
请求在处理结束的 location 上下文中记录。如果请求处理过程中发生 internal redirect,则可能与原始 location 不同。
配置示例#
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/angie-access.log compression buffer=32k;
指令#
access_log#
|
|
默认 |
|
http, server, location, if in location, limit_except |
设置缓冲日志写入的 path
、format
和配置。可以在同一级别指定多个日志。通过在第一个参数中指定 "syslog:" 前缀可以配置记录到 syslog。特殊值 off 取消当前级别的所有 access_log 指令。如果未指定格式,则使用预定义的 "combined" 格式。
如果使用了 buffer
或 gzip
参数,则日志写入将被缓冲。
小心
缓冲区大小不得超过磁盘文件原子写入的大小。对于 FreeBSD,此大小不受限制。
启用缓冲时,数据将在以下情况下写入文件:
如果下一行日志无法放入缓冲区;
如果缓冲数据的时间超过了 flush 参数指定的时间;
当工作进程 重新打开日志文件 或关闭时。
如果使用了 gzip 参数,缓冲数据将在写入文件前压缩。可以将压缩级别设置在 1 (最快,压缩率最低)和 9 (最慢,压缩率最高)之间。默认情况下,缓冲区大小为 64K 字节,压缩级别设置为 1。由于数据是以原子块压缩的,日志文件可以随时通过 "zcat" 解压或读取。
示例:
access_log /path/to/log.gz combined gzip flush=5m;
重要
为了使 gzip 压缩生效,Angie 必须使用 zlib 库构建。
文件路径可以包含变量,但此类日志具有一些限制:
使用工作进程凭证的 user 应具有在包含此类日志的目录中创建文件的权限;
缓冲写入不起作用;
每次日志写入时都会打开和关闭文件。然而,由于频繁使用的文件的描述符可以存储在缓存中,可以在 open_log_file_cache 指令的 valid 参数指定的时间内继续写入旧文件;
每次日志写入时都会检查请求根目录的存在性,如果不存在则不创建日志。因此,最好在同一级别指定 root 和 access_log:
server {
root /spool/vhost/data/$host;
access_log /spool/vhost/logs/$host;
...
if 参数启用条件日志记录。如果条件评估为 "0" 或空字符串,请求将不会被记录。在以下示例中,响应代码为 2xx 和 3xx 的请求将不会被记录:
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
log_format#
|
|
默认 |
|
http |
指定日志格式。
escape
参数允许设置变量的 json
或 default
字符转义,默认使用 default
转义。值 none 禁用转义。
对于 default
转义,字符 """, "\" 和其它值小于 32 或大于 126 的字符被转义为 "\xXX"。如果未找到变量值,将记录一个连字符 "-"。
对于 json
转义,所有不允许在 JSON 字符串中的字符将被转义:字符 """ 和 "\" 被转义为 "\"" 和 "\\",值小于 32 的字符被转义为 "\n", "\r", "\t", "\b", "\f" 或 "\u00XX"。
发送给客户端的报头行前缀为 sent_http_
,例如,$sent_http_content_range
。
配置始终包含预定义的 combined
格式:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
open_log_file_cache#
|
|
默认 |
|
http, server, location |
定义一个缓存,用于存储名称中包含变量的常用日志的文件描述符。该指令具有以下参数:
|
设置缓存中描述符的最大数量;如果缓存已满,则最近最少使用的 (LRU) 描述符将被关闭 |
|
设置缓存描述符在多长时间内无访问后关闭的时间; |
|
设置在 inactive 参数定义的时间内文件使用次数的最小值,以便描述符在缓存中保持打开状态; |
|
设置检查文件是否仍然存在且名称相同的时间间隔; |
|
禁用缓存 |
使用示例:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;