日志 ###
该模块以指定的格式写入请求日志。
配置示例#
log_format basic '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time';
access_log /spool/logs/angie-access.log basic buffer=32k;
指令#
access_log#
|
|
默认 |
|
stream, server |
设置用于缓冲日志写入的 path
、format
和配置。在同一级配置中可以指定多个日志。通过在第一个参数中指定前缀 "syslog:"
可以配置日志记录到 syslog。特殊值 off
会取消当前级别的所有 access_log
指令。
如果使用了 buffer
或 gzip
参数,日志写入将被缓冲。
小心
缓冲区大小不得超过对磁盘文件的原子写入大小。在 FreeBSD 上,此大小是无限制的。
启用缓冲时,数据将会写入文件:
如果下一行日志无法放入缓冲区;
如果缓冲数据的时间超过了 flush 参数指定的时间;
当工作进程 重新打开日志文件 或关闭时。
如果使用了 gzip 参数,那么缓冲数据在写入文件前将被压缩。压缩级别可以设置为 1 (最快,压缩最小)到 9 (最慢,压缩最佳)之间。默认情况下,缓冲区大小为 64K 字节,压缩级别设为 1。由于数据以原子块形式压缩,日志文件可以在任何时候通过 "zcat" 解压或读取。
示例:
access_log /path/to/log.gz basic gzip flush=5m;
重要
为了使 gzip 压缩正常工作,Angie 必须与 zlib 库一起构建。
文件路径可以包含变量,但这样的日志有一些限制:
使用工作进程凭据的 用户 应有权限在记录日志的目录中创建文件;
缓冲写入不起作用;
每次写入日志时文件都会被打开和关闭。不过,由于经常使用的文件描述符可以存储在缓存中,写入旧文件可以在由 open_log_file_cache 指令的 valid 参数指定的时间内继续。
if 参数启用条件日志记录。如果条件为 "0" 或空字符串,则会话不会被记录。
log_format#
指定日志格式。
escape
参数允许在变量中设置 json
或 default
字符转义,默认情况下使用 default
转义。值 none
禁用转义。
对于 default
转义,字符 ""、 "\" 以及值小于 32 或大于 126 的其他字符将被转义为 "\xXX"。如果未找到变量值,将记录为连字符 "-"。
对于 json
转义,所有不允许在 JSON 字符串中出现的字符将被转义:字符 """ 和 "\" 被转义为 "\"" 和 "\\",值小于 32 的字符被转义为 "\n"、"\r"、"\t"、"\b"、"\f" 或 "\u00XX"。
open_log_file_cache#
|
|
默认 |
|
stream, server |
定义一个缓存,用于存储包含变量名称的日志文件的文件描述符。该指令具有以下参数:
|
设置缓存中的最大描述符数量;如果缓存已满,则最少最近使用(LRU)的描述符将被关闭。 |
|
设置缓存描述符在无访问期间关闭的时间; |
|
设置在 inactive 参数定义的时间段内文件使用的最小次数,以使描述符留在缓存中; |
|
设置检查文件是否仍以相同名称存在的时间; |
|
禁用缓存。 |
使用示例:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;