问题
需要记录nginx中请求体的json请求参数。
解决
只需要使用$request_body记录请求参数即可,但是请求体数据是json的时候,还需要设置日志格式为json,即:escape=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"}';
然后,在某个具体日志处设置,这个日志格式即可:
access_log /home/xxx/xxx-test/logs/xxxx.log json_log;
这样就可以记录nginx json日志了。
参考
- Tech Blog: How to configure JSON logging in nginx?