Rsyslog:logging到UNIX域套接字或INET套接字(UDP)之间的区别

从外部应用程序login到系统日志时,我观察到以下行为:如果将格式良好的系统日志消息发送到UDP套接字,rsyslog会正确parsing它,但是,如果将相同的消息发送到UNIX域套接字(/ dev / log),它根本就没有被parsing(rsyslog基本上假定,他收到的所有东西都是一个消息,所以没有时间戳,没有任何东西)。

有问题的信息是

<142>1 2010-12-29T11:11:11Z foo bar 123 baz - A Message 

这被parsing为

 Dec 29 11:11:11 foo bar[123] A Message 

除非不是。

可能你应该发送没有主机名(foo)和rfc3164格式(不是rfc5424,如上所述)的消息来parsing它。

parsing消息时,rsyslog尽最大努力去理解它。

对于从Unix套接字接收到的消息,rsyslog使用这些字段接受类似RFC 3164的消息: pritimestamptagcontent

它接受各种消息格式,如:

  • just a message
  • <pri>message
  • <pri>tag: msg

关于消息时间戳:

  1. 它们必须是RFC3164格式。
  2. 由于默认情况下启用了SysSock.IgnoreTimestamp选项,因此在禁用此选项之前,您的时间戳将被忽略。

hostname段不能被覆盖。 rsyslog将始终从它的configuration中获取它。