模块 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 压缩起作用,必须使用 zlib 库构建 nginx。
文件路径可以包含变量,但这种日志有一些约束:
- 用于工作进程的凭据的 用户 应具有在此类日志目录中创建文件的权限;
- 缓冲写入不起作用;
- 文件在每次日志写入时打开并关闭。但是,由于经常使用的文件描述符可以存储在 缓存 中,因此可以在 open_log_file_cache 指令的
valid参数指定的时间内继续写入旧文件
如果使用了 if 参数,则启用条件日志记录。如果 条件 计算为“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;
