nginx第二篇:在日志中打印请求体和响应

nginx默认是不在access.log中打印请求体的,需要自定义配置。使用nginx自带的request_body变量即可,这样经proxy_pass转发的请求,就能在日志中打印出请求体了。但是中文会被转义,可以使用log_escape_non_ascii取消转义。但是请求体中的双引号会被转义成\x22,无法解决,只能在查看时做替换。

log_format main '$remote_addr [$time_local] "$request" "$request_body" '
                '$request_time $request_length '
                '$status $body_bytes_sent "$http_referer" '
                'request_time:$request_time '
                'upstream_response_time:$upstream_response_time '
                '"$http_user_agent" ';

log_escape_non_ascii off;

如果想把日志打印成json,可以自定义日志格式如下:

log_format json_log escape=json '{"realip":"$remote_addr","@timestamp":"$time_iso8601","host":"$http_host","request":"$request","req_body":"$request_body","status":"$status","size":$body_bytes_sent,"ua":"$http_user_agent","cookie":"$http_cookie","req_time":"$request_time","uri":"$uri","referer":"$http_referer","xff":"$http_x_forwarded_for","ups_status":"$upstream_status","ups_addr":"$upstream_addr","ups_time":"$upstream_response_time"}';

 

posted on 2016-03-16 15:38  koushr  阅读(457)  评论(0)    收藏  举报

导航