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 路径 格式 [缓冲区=大小] [gzip[=级别]] [刷新=时间] [如果=条件];
access_log 关闭;
默认值
access_log off;
上下文 streamserver

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

如果使用 缓冲区gzip 参数,则会缓冲写入日志。

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

启用缓冲后,将在以下情况下将数据写入文件

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

示例

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

要使 gzip 压缩正常工作,必须使用 zlib 库构建 nginx。

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

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;
上下文 streamserver

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

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

使用示例

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