转发带有结构化数据的消息时转换 rsyslog 消息格式
convert rsyslog message format when forwarding messages with structured-data
我的守护进程使用 libc syslog()
调用以 RSYSLOG_TraditionalFileFormat
格式记录消息。并且,同一主机上的 rsyslogd 守护进程 运行 需要将所有这些消息以 RSYSLOG_SyslogProtocol23Format
格式转发到远程日志收集器。
现在我想 "piggy back" %STRUCTURED-DATA%
到 RSYSLOG_TraditionalFileFormat
格式(基本上当我的守护程序调用 syslog()
时,它会在方括号中指定结构化数据)。 如何在 rsyslog.conf 中指定传入的日志消息格式(或模板)以便它理解结构化数据?
我知道解决方案之一是让我的守护程序直接向 /dev/log
发送消息并更改 rsyslog.conf
中的默认日志消息格式。但是,这似乎不对,因为我想保持本地日志格式不变。
似乎无法优雅地解决这个问题,因为 libc syslog()
调用使用 /dev/log
UNIX 域套接字。
rsyslog 8.8 及更早版本对通过 UNIX 域套接字接收的消息使用硬编码消息解析器。请参阅 usespecialparser 设置 (http://www.rsyslog.com/doc/v8-stable/configuration/modules/imuxsock.html)
使它与 rsyslog 7.4 附带的最新 Ubuntu 15.04 一起使用的另一个选项是使用 UDP 套接字,但我不能再使用 libc syslog()
。
我的守护进程使用 libc syslog()
调用以 RSYSLOG_TraditionalFileFormat
格式记录消息。并且,同一主机上的 rsyslogd 守护进程 运行 需要将所有这些消息以 RSYSLOG_SyslogProtocol23Format
格式转发到远程日志收集器。
现在我想 "piggy back" %STRUCTURED-DATA%
到 RSYSLOG_TraditionalFileFormat
格式(基本上当我的守护程序调用 syslog()
时,它会在方括号中指定结构化数据)。 如何在 rsyslog.conf 中指定传入的日志消息格式(或模板)以便它理解结构化数据?
我知道解决方案之一是让我的守护程序直接向 /dev/log
发送消息并更改 rsyslog.conf
中的默认日志消息格式。但是,这似乎不对,因为我想保持本地日志格式不变。
似乎无法优雅地解决这个问题,因为 libc syslog()
调用使用 /dev/log
UNIX 域套接字。
rsyslog 8.8 及更早版本对通过 UNIX 域套接字接收的消息使用硬编码消息解析器。请参阅 usespecialparser 设置 (http://www.rsyslog.com/doc/v8-stable/configuration/modules/imuxsock.html)
使它与 rsyslog 7.4 附带的最新 Ubuntu 15.04 一起使用的另一个选项是使用 UDP 套接字,但我不能再使用 libc syslog()
。