模块 ngx_stream_log_module

配置示例
指令
     access_log
     log_format
     open_log_file_cache

ngx_stream_log_module 模块 (1.11.4) 以指定格式写入会话日志。

配置示例

log_format basic '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time';

access_log /spool/logs/nginx-access.log basic buffer=32k;

指令

语法 access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];
access_log off;
默认值
access_log off;
上下文 stream, server

设置缓存写入日志的路径、格式和配置。可以在同一配置级别上指定多个日志。通过在第一个参数中指定“syslog:”前缀,可以将日志记录配置到 syslog。特殊值 off 取消当前级别上的所有 access_log 指令。

如果使用 buffergzip 参数,日志写入将被缓存。

缓冲区大小不得超过对磁盘文件进行原子写入的大小。对于 FreeBSD,此大小没有限制。

启用缓存时,数据将被写入文件

如果使用 gzip 参数,则缓存的数据在写入文件之前将被压缩。压缩级别可以设置为 1(最快,压缩率较低)到 9(最慢,压缩率最高)之间的值。默认情况下,缓冲区大小等于 64K 字节,压缩级别设置为 1。由于数据是以原子块进行压缩的,因此日志文件可以随时使用“zcat”进行解压或读取。

示例

access_log /path/to/log.gz basic gzip flush=5m;

为了使 gzip 压缩工作,nginx 必须使用 zlib 库构建。

文件路径可以包含变量,但此类日志有一些限制

if 参数启用条件日志记录。如果 condition 的值为“0”或空字符串,则不会记录会话。

语法 log_format name [escape=default|json|none] string ...;
默认值
上下文 stream

指定日志格式,例如

log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

escape 参数 (1.11.8) 允许设置变量中的字符转义,可以是 jsondefault;默认情况下,使用 default 转义。none 参数 (1.13.10) 禁用转义。

对于 default 转义,字符“"”、“\”以及值小于 32 或大于 126 的其他字符会转义为“\xXX”。如果找不到变量值,将记录一个连字符(“-”)。

对于 json 转义,所有 JSON 字符串中不允许的字符都会转义:字符“"”和“\”转义为“\"”和“\\”,值小于 32 的字符转义为“\n”、“\r”、“\t”、“\b”、“\f”或“\u00XX”。

语法 open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
默认值
open_log_file_cache off;
上下文 stream, server

定义一个缓存,用于存储名称包含变量的常用日志的文件描述符。该指令具有以下参数

max
设置缓存中描述符的最大数量;如果缓存满了,将关闭最近最少使用 (LRU) 的描述符
inactive
设置缓存的描述符在此期间没有访问时将被关闭的时间;默认值为 10 秒
min_uses
设置在 inactive 参数定义的时间内文件使用的最小次数,以使描述符在缓存中保持打开状态;默认值为 1
valid
设置在此时间之后应检查文件是否仍然以相同名称存在的时间;默认值为 60 秒
off
禁用缓存

使用示例

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;