我是 syslog 模块的新手。我尝试在模板中使用此参数记录带有结构化数据的消息。但它显示结构化数据的空值。我正在使用 rsyslogd 5.8.11 和 rsyslogd 4.8.4,对于这两个版本,我得到的结果相同。
我正在使用模板:
"<%PRI%>%TIMESTAMP:::date-rfc3339%%HOSTNAME%%syslogtag%%APP-NAME%%PROCID%%MSGID% %msg% %STRUCTURED-DATA%\n”
获取消息格式如下:
<142> 2015-01-29T06:43:53.081641-05:00 localhost login[2116]: login 2116 - [2116 : 2116 INFO]SERIAL Login from IP:127.0.0.1 user:admin -
有人能告诉我我做错了什么吗?我只想在日志文件中记录带有 SD-ID、SD-PARAM 的结构化数据的消息。
答案1
rsyslog 可以发出带有结构化数据的 RFC5424 消息。
但是你也有办法发送 RFC5424 消息吗到rsyslog?——如果您直接通过 UDP 或 TLS 记录消息,它应该可以工作。但是如果您通过传统的 BSD Syslog 函数记录,那么将不会有任何结构化数据,也不会有任何 MSGID。(据我所知,NetBSD 拥有唯一支持 RFC5424 的 libc,并且syslogp()功能。)
答案2
我也在尝试实现这一点。我设法找出如何使用模板发出 RFC5424 消息格式RSYSLOG_SyslogProtocol23Format
。但是,我不知道如何向结构化数据添加字段。此外,值得一提的是,我成功地使用 syslog-ng 发送/接收了 RFC5424 格式。