Nginx

ngx_stream_log_module

Module 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路径格式buffer = sizegzip = level] flush = time; access_log off;
默认:access_log off;
语境:流,服务器

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

如果使用bufferor 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 name escape = default | json string ...;
默认:
语境:

指定日志格式,例如:

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逸出被使用。

句法:open_log_file_cache max = N inactive = time valid = time; open_log_file_cache off;
默认:open_log_file_cache off;
语境:流,服务器

定义一个缓存,用于存储名称中包含变量的常用日志的文件描述符。该指令具有以下参数:

max设置缓存中描述符的最大数量; 如果高速缓存变满,则最近最少使用(LRU)描述inactive符关闭,如果在此期间没有访问,则高速缓存描述符关闭的时间; 默认情况下,10秒min_uses设置在inactive参数定义的时间内文件使用的最小数量,以使描述符在缓存中保持打开状态; 默认情况下,1 valid设置应检查文件是否仍然存在同名的时间; 默认情况下,60秒off禁用缓存

用法示例:

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;