使用以下格式和访问日志配置:
log_format syslog '{"hi2u":true,"request_time":"$request_time","@timestamp":"$time_iso8601", "request_id":"$http_x_request_id", "token":"$token"}';
access_log syslog:server=localhost:9000 syslog;
使用 netcat 时,我在端口 9000 上收到此消息:
<190>8月29日 06:17:03 用户全系列 nginx: {"hi2u":true,"request_time":"0.000","@timestamp":"2017-08-29T06:17:03-07:00", "request_id":"-", "token":"abcdef123456789"}
如果我查看 nginx 源代码,我会看到类似于此处添加的标题:
https://github.com/nginx/nginx/blob/master/src/http/modules/ngx_http_log_module.c#L360
有人知道禁用那里的标题以便只显示 log_format 的方法吗?我想它可能只是我不知道的规范中的 syslog 格式 :)
我注释掉了那一行,这是我期望的行为:)
if (log[l].syslog_peer) {
// p = ngx_syslog_add_header(log[l].syslog_peer, line);
}
答案1
另一张由 Alexy 提供的。将其添加到此处以便大家查看:
这是 syslog 协议 tools.ietf.org/html/rfc3164#section-4.1.1 的 PRI 部分