模块 ngx_stream_log_module

Example Configuration
Directives
     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:特殊值off取消 access_log当前级别的所有指令。

如果 使用 buffer或参数,写入日志将被缓冲。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)允许 在变量中设置json或转义字符,默认情况下使用转义。参数(1.13.10) 禁用转义。 defaultdefaultnone

对于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;