nginx访问日志格式的自定义配置,以本人线上项目为示例demo
nginx日志分为两种
客户端访问记录文件名称:access_log;
服务运行错误记录文件名称:error.log;
今天我就来自定义配置一下 access_log 访问日志的格式
nginx版本
[[email protected] ~]# nginx -v
nginx version: nginx/1.16.1
nginx.conf文件
截取关键位置 其他省略...
http {
include mime.types;
default_type application/octet-stream;
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for" $request_time';
log_format test '$realip - "$upstream_cache_status" $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$remote_addr" "$upstream_addr" $request_time';
日志格式允许包含的变量注释如下:
$realip Nginx自带的Realip模块获取用户真实IP
$upstream_cache_status
$remote_user 客户端用户名称
$time_local 本地时间
$request 请求的URL和HTTP协议
$status 请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容
$http_referer 从哪个页面链接访问过来的
$http_user_agent 客户端浏览器相关信息
$remote_addr 客户端IP地址,如果有代理服务器之类的,该值可能就不是客户端的真实IP了
$upstream_addr Nginx向客户端输出真实的后端IP地址
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户
我这里就记录我用到的这些 想了解更多变量参数 请自行谷歌
使用调用,把这个格式日志写进access_log文件
server {
...省略...
#会在nginx/log/目录下生成www_access.log文件
access_log logs/www_access.log test;
...
}
注意:
里面的test 就是log_format 右侧的test
[[email protected] logs]# ll
total 271376
-rw-r--r-- 1 root root 1672 Dec 7 09:48 error.log
-rw-r--r-- 1 root root 6 Nov 24 11:00 nginx.pid
-rw-r--r-- 1 root root 277876243 Dec 7 14:02 www_access.log
我的项目已经在线上跑很长时间了 随便复制一条信息过来
日志效果:
113.57.47.100 - "-" - [07/Dec/2021:09:59:07 +0800] "GET /demo333/89466.html HTTP/2.0" 200 7356 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.4 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.4 facebookexternalhit/1.1 Facebot Twitterbot/1.0" "113.57.47.100" "10.0.1.9:80" 0.076
相关文章