模块 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
access_log |
---|---|
默认: |
access_log off; |
语境: |
stream ,server |
设置缓冲日志写入的路径、格式和配置。可以在同一配置级别上指定多个日志。
可以通过在第一个参数中指定“ ”前缀来配置记录到系统日志。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 压缩发挥作用,必须使用 zlib 库构建 nginx。
文件路径可以包含变量,但此类日志有一些限制:
- 工作进程使用其凭据的用户应有权在包含此类日志的目录中创建 文件;
- 缓冲写入不起作用;
-
每次写入日志时都会打开和关闭文件。但是,由于经常使用的文件的描述符可以存储在缓存中,因此可以在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
或转义字符,默认情况下使用转义。参数(1.13.10) 禁用转义。
default
default
none
对于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;