1 基础知识
1.1 模块的作用
ngx_stream_log_module用户向日志输出特定的自定义格式
1.2 使用范例
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;
1.3 支持的指令
1.3.1 指定日志的路径
1.3.1.1 语法
access_log path format [buffer=size] [gzip[=level]] [if=condition]; access_log off;
– path,参数定义日志的写入路径
– format,参数定义日志的格式
– 其他参数,format后面的参数定义指定的配置
– buffer和gzip参数,则将缓冲写入日志
– gzip参数将在写入前压缩缓冲的数据,压缩级别1-9,1最快,压缩最少,9最慢,最佳压缩(依赖zlib库)
– 缓冲区默认大小为64K字节,压缩级别默认为1
– if参数为条件记录,如果计算结果为0或者空字符串,则不产生记录
1.3.1.2 默认值
access_log off;
注:该默认值为关闭
1.3.1.3 上下文
stream,server
1.3.2 指定日志格式
1.3.2.1 语法
log_format name [escape=default|json|none] string ...;
– escape的参数有default,json,none
– 设置default参数,忽略功能被启动
– 设置none参数,忽略功能被禁用
1.3.2.2 默认值
-
1.3.2.3 上下文
stream
1.3.2.4 使用范例
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"';
1.3.3 定义缓冲
1.3.3.1 语法
open_log_file_cache max=N [inactive=itme] [min_uses=N] [valid=time]; open_log_file_cache off;
– 定义缓存,用于存储名称中包含变量的常用日志文件描述符
– max,参数设置缓存中最大描述符数,如果缓存满,则最近最少使用的描述符将被关闭
– inactive,参数如果期间没有访问权限,则关闭缓存描述符的舌尖,默认10秒
– min_uses,参数定义inactive参数定义的时间内最少文件的使用次数,使缓存保持打开状态,默认1
– valid,参数设置应检查文件是否存在同名的时间,默认60秒
– off,参数禁用缓存功能
1.3.3.2 默认值
open_log_file_cache off;
1.3.3.3 上下文
stream, server
1.3.3.4 使用范例
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
2 最佳实践
2.1 环境配置
请参阅以下链接配置Nginx带用户唯一标识的反向代理环境,
https://www.cmdschool.org/archives/2117
注:以上环境不是必须的,任意的nginx都可以定义特定的变量,请根据模块查询特定的变量。
2.2 自定义Nginx日志
2.2.1 加入特定的变量
vim /etc/nginx/nginx.conf
加入如下定义:
http { [...] log_format main '$remote_addr - $remote_user $uid_got [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; [...] }
注:留意变量$uid_got,以上变量只是一个范例,请根据实际的情况定义变量。
2.2.2 重载服务使配置生效
systemctl reload nginx
2.2.3 验证配置
tail -f /var/log/nginx/access.log
可见如下提示:
14.30.4.14 - - uid=45CCA8C0DFFB4E5BFC193D5A02070203 [18/Jul/2018:16:36:17 +0800] "GET /favicon.ico HTTP/1.1" 404 564 "https://www.cmdschool.org/archives/2117" "Mozilla/5.0 (Linux; Android 6.0; DIG-AL00 Build/HUAWEIDIG-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36" "-"
注:留意输出的“uid=45CCA8C0DFFB4E5BFC193D5A02070203”
参阅文档:
=============
模块的官方文档
————-
http://nginx.org/en/docs/stream/ngx_stream_log_module.html
http://nginx.org/en/docs/http/ngx_http_log_module.html
模块参考的变量
————-
http://nginx.org/en/docs/stream/ngx_stream_core_module.html#var_protocol
没有评论