0%

Nginx-log-format

Ngxin 日志格式化

  • Nginx提供的访问日志里就蕴藏着大量有用信息。今天这篇要说的就是如果修改Nginx默认日志格式,以便于我们更好的挖掘有效指标。

编辑/etc/nginx.conf配置文件,在日志部分添加下面两段代码,编辑完成后重启Nginx服务即可。

1
2
3
4
log_format main '$host - $remote_addr - [$time_local] "$request" '
'$status $upstream_response_time $request_time "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" $body_bytes_sent ';
access_log /var/log/nginx/access.log main;

简单罗列一下变量的含义:

  • $host 访问域名
  • $remote_addr 客户端IP地址
  • $time_local 访问时间
  • $status 访问状态码
  • $upstream_response_time 应用返回到Nginx的时间
  • $request_time 请求时间
  • $http_referer 请求来源
  • $http_user_agent 访问客户端
  • $http_x_forwarded_for 客户端IP地址
  • $body_bytes_sent 返回给客户端大小

在server中不生效的问题

  • 在server中增加 access_log /var/log/nginx/access.log main;

日期显示问题

  • [01/Jul/2020:03:25:17 +0800] 官方默认是这种

  • 修改默认格式

1
2
3
4
log_format main '$host - $remote_addr - [$time_iso8601] "$request" '
'$status $upstream_response_time $request_time "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" $body_bytes_sent ';
access_log /var/log/nginx/access.log main;
  • 在server中增加下面代码
1
2
3
4
5
6
7
8
9
10
11
12
13

server {

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
set $minutes $5;
set $seconds $6;
}

}