Module ngx_stream_log_module
ngx_stream_log_module
模块(1.11.4)以指定的格式写入会话日志。
Example Configuration
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;
Directives
Syntax: | access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition]; |
access_log off; | |
默认值: | access_log off; |
上下文: stream ,server |
设置缓冲日志写入的路径format和配置。可以在同一级别上指定多个日志。可以通过在第一个参数中指定“ syslog:
”前缀来配置登录到syslog。特殊值off
取消当前级别上的所有access_log
指令。
如果使用buffer
或gzip
参数,则将写入日志。
Note
缓冲区大小不得超过对磁盘文件进行原子写入的大小。对于 FreeBSD,此大小是无限的。
启用缓冲后,数据将被写入文件:
-
如果下一个日志行不适合缓冲区;
-
如果缓冲的数据早于
flush
参数指定的数据; -
当工作进程为re-opening个日志文件或正在关闭时。
如果使用gzip
参数,则缓冲的数据将在写入文件之前被压缩。压缩级别可以设置为 1(最快,更少压缩)到 9(最慢,最佳压缩)。默认情况下,缓冲区大小等于 64K 字节,并且压缩级别设置为 1.由于数据是按原子块压缩的,因此可以随时对日志文件进行解压缩或以“ zcat
”读取。
Example:
access_log /path/to/log.gz basic gzip flush=5m;
Note
为了使 gzip 压缩正常工作,必须使用 zlib 库构建 nginx。
文件路径可以包含变量,但是此类日志具有一些约束:
-
工作进程使用其凭据的user应具有在具有此类日志的目录中创建文件的权限;
-
缓冲写不起作用;
-
每次写入日志时都会打开和关闭文件。但是,由于可以将常用文件的 Descriptors 存储在cache中,因此可以在open_log_file_cache指令的
valid
参数指定的时间内 continue 写入旧文件。
if
参数启用条件日志记录。如果condition
的值为“ 0”或为空字符串,则不会记录会话。
Syntax: | log_format name [escape=default|json|none] string ...; |
Default: | — |
Context: | 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 strings中不允许的所有字符:字符“ "
”和“ \
”转义为“ \"
”和“ \\
”,值小于 32 的字符转义为“ \n
”,“ \r
” ,“ \t
”,“ \b
”,“ \f
”或“ \u00XX
”。
Syntax: | 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 |
定义一个缓存,该缓存存储名称中包含变量的常用日志的文件 Descriptors。该指令具有以下参数:
-
max
- 设置缓存中 Descriptors 的最大数量;如果缓存已满,则关闭最近最少使用(LRU)Descriptors
-
inactive
- 设置如果在这段时间内没有访问权限,则关闭缓存的 Descriptors 的时间;默认情况下为 10 秒
-
min_uses
- 设置在
inactive
参数定义的时间内文件使用的最小数量,以使 Descriptors 在缓存中保持打开状态;默认情况下,1
- 设置在
-
valid
- 设置时间,在该时间后应检查文件是否仍然具有相同名称;默认情况下为 60 秒
-
off
- disables caching
Usage example:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;