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;
上下文: streamserver

设置缓冲日志写入的路径format和配置。可以在同一级别上指定多个日志。可以通过在第一个参数中指定“ syslog:”前缀来配置登录到syslog。特殊值off取消当前级别上的所有access_log指令。

如果使用buffergzip参数,则将写入日志。

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)允许在变量中设置jsondefault字符转义,默认情况下使用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;
上下文: streamserver

定义一个缓存,该缓存存储名称中包含变量的常用日志的文件 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;