我是靠谱客的博主 凶狠小笼包,最近开发中收集的这篇文章主要介绍nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
在使用nginx记录访问日志时,发现在含有 request_body
的 PUT
, POST
请求时,日志中会含有 x22
x9B
x5C
x09
x08
字符,不利于阅读和处理。
具体 支持 request_body
的http method参见 http1.1定义 9 Method Definitions
和 Payloads of HTTP Request Methods
nginx.conf
默认access_log 配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$http_host $upstream_status $upstream_addr $request_time $upstream_response_time';
改成
重点: json_log 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"}';
参考 How to generate a JSON log from nginx?
官方文档ngx_http_log_module.html#log_format
注意, escape
是从 1.11.8
后新增的参数。
如果是老版本的,linux可以考虑使用 shell
命令替换, logstash
可以考虑使用 ruby
处理 ,参考 Optionally support handling of x escape codes
最后
以上就是凶狠小笼包为你收集整理的nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录的全部内容,希望文章能够帮你解决nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复