当从外部应用程序记录到 syslog 时,我观察到以下行为:如果我将格式良好的 syslog 消息发送到 UDP 套接字,rsyslog 会正确解析它,但是如果将同一条消息发送到 UNIX 域套接字(/dev/log),它根本不会被解析(rsyslog 基本上假定他收到的所有内容都是消息,因此没有时间戳,没有任何东西)。
有问题的信息是
<142>1 2010-12-29T11:11:11Z foo bar 123 baz - A Message
解析为
Dec 29 11:11:11 foo bar[123] A Message
除非不是。
答案1
可能您应该发送不带主机名(foo)且采用 rfc3164 格式(而不是上面的 rfc5424)的消息以对其进行解析。
答案2
在解析消息时,rsyslog 会尽力理解它。
对于从 Unix 套接字收到的消息,rsyslog 接受类似 RFC 3164 的消息,使用以下字段:pri
、、和。timestamp
tag
content
它接受各种消息格式,例如:
just a message
<pri>message
<pri>tag: msg
关于消息时间戳:
- 它们必须是 RFC3164 格式。
- 自
SysSock.IgnoreTimestamp
选项默认启用,您的时间戳将被忽略,直到您禁用此选项。
该hostname
字段不能被覆盖。rsyslog 将始终从其配置中获取它。