模块 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 access_log |
---|---|
默认值 |
access_log off; |
上下文 |
stream , server |
设置缓存写入日志的路径、格式和配置。可以在同一配置级别上指定多个日志。通过在第一个参数中指定“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 压缩工作,nginx 必须使用 zlib 库构建。
文件路径可以包含变量,但此类日志有一些限制
- 工作进程使用的凭据对应的用户应具有在此类日志目录中创建文件的权限;
- 缓存写入不起作用;
- 每次写入日志时都会打开和关闭文件。但是,由于频繁使用的文件的描述符可以存储在缓存中,因此在 open_log_file_cache 指令的
valid
参数指定的时间内,可以继续写入旧文件
if
参数启用条件日志记录。如果 condition
的值为“0”或空字符串,则不会记录会话。
语法 |
log_format |
---|---|
默认值 | — |
上下文 |
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
或 default
;默认情况下,使用 default
转义。none
参数 (1.13.10) 禁用转义。
对于 default
转义,字符“"
”、“\
”以及值小于 32 或大于 126 的其他字符会转义为“\xXX
”。如果找不到变量值,将记录一个连字符(“-
”)。
对于 json
转义,所有 JSON 字符串中不允许的字符都会转义:字符“"
”和“\
”转义为“\"
”和“\\
”,值小于 32 的字符转义为“\n
”、“\r
”、“\t
”、“\b
”、“\f
”或“\u00XX
”。
语法 |
open_log_file_cache open_log_file_cache |
---|---|
默认值 |
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;