我正在尝试将请求的请求正文记录到我的api,而nginx正在将所有引号(以及一些其他字符,如空格和制表符)转换为十六进制字符。
这是我的日志格式
log_format postdata '{"ts": "$time_iso8601", "status": $status, "req": "$uri", "meth": "$request_method", "body": "$request_body"}';
这里被记录的内容
{"ts": "2015-05-20T15:31:11-07:00", "status": 400, "req": "/v2/track", "meth": "POST", "body": {\x22id\x22:\x22user id\x22}}
我怎样才能避免这种情况,使生成的日志行是
{"ts": "2015-05-20T15:31:11-07:00", "status": 400, "req": "/v2/track", "meth": "POST", "body": {"id":"user id"}}
你不能把它的。在...中编码nginx的日志模块。但是,如果你把引号(如你以日志格式显示,但不是实际结果),它将是有效的js字符串,你可以在'JSON.parse'中使用。 –
嗯,如果你使用非ascii,但是nginx的日志模块早在JSON变得流行或者甚至存在之前就已经写好了。 –
对此行为有一些了解的相关问题可以在这里找到(http://serverfault.com/q/247271) – TomDotTom