我想制作一个自定义的 nginx 访问日志,它不仅是 JSON,而且对于查询中的每个 key=value 也有 JSON key:value 对。
为 nginx 制作 JSON 日志很简单:
log_format main '{'
'"remote_addr": "$remote_addr",'
'"remote_user": "$remote_user",'
'"time_local": "$time_local",'
'"request": "$request",'
'"status": "$status",'
'"body_bytes_sent": "$body_bytes_sent",'
'"http_referer": "$http_referer",'
'"http_user_agent": "$http_user_agent"'
'}';
但是可以说请求是GET /blah?foo=bar&hi=there%20mom
我在 json 中寻找 2 个额外的东西
...
'http_user_agent':'chrome',
'foo':'bar',
'hi':'there mom'
}
这可以做到吗?如果是这样,我如何确保生成的 JSON 有效?(解码 URL 转义等)。
请查看HttpSetMiscModule ( GitHub Repo )。你必须自己编译 nginx 来包含这个模块。
之后,您可以执行以下操作:
请注意,我还没有测试过这个!