转发带结构化数据的消息时转换rsyslog消息格式

时间:2015-05-16 02:28:32

标签: linux logging syslog rsyslog

我的守护程序使用libc syslog()调用来记录RSYSLOG_TraditionalFileFormat格式的邮件。并且,在同一主机上运行的rsyslogd守护程序需要以RSYSLOG_SyslogProtocol23Format格式将所有这些消息转发到远程日志收集器。

现在我想"捎带" %STRUCTURED-DATA%RSYSLOG_TraditionalFileFormat格式(基本上当我的守护程序调用{​​{1}}时,它将在方括号中指定结构化数据)。 如何在rsyslog.conf中指定传入的日志消息格式(或模板),以便理解结构化数据?

我理解其中一个解决方案是让我的守护进程直接向syslog()发送消息并更改/dev/log中的默认日志消息格式。但是,这似乎不对,因为我希望保持本地日志格式不变。

1 个答案:

答案 0 :(得分:1)

似乎无法以优雅的方式解决这个问题,因为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()了。