为了方便分析及导入第三方日志分析系统,如es等,通常需要将日志输出为json格式,如下是一个常用的json配置:
map $upstream_response_time $upstream_response_timer {
default $upstream_response_time;
"" 0;
}
log_format json escape=json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"server_addr":"$server_addr",'
'"remote_addr":"$remote_addr",'
'"host":"$host",'
'"uri":"$uri",'
'"body_bytes_sent":$body_bytes_sent,'
'"bytes_sent":$body_bytes_sent,'
'"upstream_response_time":$upstream_response_timer,'
'"request":"$request",'
'"request_length":$request_length,'
'"request_time":$request_time,'
'"status":"$status",'
'"http_referer":"$http_referer",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"http_user_agent":"$http_user_agent",'
'"staffname":"$staffname"'
'}';
server {
// 一些重要的cookie,也可以写到日志中, set只能放在server、location、if中
set $staffname "";
if ($http_cookie ~* "staffname=(.+?)(?=;|$)") {
set $staffname $1;
}
...
access_log /path/to/access.log json;
}