nginx的日志模块
# 前言
nginx日志模块(ngx_http_log_module (opens new window))的作用就是存储访问日志,而且可以高度控制日志的格式、压缩类型等等
# 语法及作用域
# access_log
# context: http, server, location, if in location, limit_except
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
1
2
3
2
3
# log_format
syntax: log_format name [escape=default|json|none] string ...;
default: log_format combined "...";
context: http
1
2
3
2
3
# 格式化记录日志
# 先给一个例子
log_format custom '$remote_addr - [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /logs/custom-access.log custom;
1
2
3
4
5
2
3
4
5
这个例子就是定义了一个format custom记录了访问的IP及访问时间,状态码、防盗链、UA、及压缩格式等等,并且在访问日志出设置。
# log_format
log_format的一些参数,具体可以查看文末官网链接
语法
Syntax: log_format name [escape=default|json|none] string ...;
Default: log_format combined "...";
Context: http
1
2
3
2
3
# 按照条件打日志
如果access_log设置了条件,则会在满足条件的请求才会打日志,当条件结果为0或者空字符串的时候则不会记录日志。
比如我们只记录状态码5xx的日志,可以这么做
map $status $loggable {
~^[5] 1;
default 0;
}
access_log /path/to/access.log combined if=$loggable;
1
2
3
4
5
6
2
3
4
5
6
其中combinded为默认格式化格式
# 参考
还有几个点没有说,比如日志用到的变量可以缓存,日志压缩,文件缓冲区,日志刷新间隔时间,更多内容参考
在 GitHub 编辑此页 (opens new window)
上次更新: 2024/02/25, 12:11:11