为什么Linux syslog 文件不遵循RFC3339 协议?

Gre*_*pez 5 syslog timestamps protocols

为什么 Linux syslog 文件:/var/log/syslog 不遵循协议http://tools.ietf.org/html/rfc5424#page-11 中定义的时间戳格式?

gol*_*cks 6

来自 RFC 5424(它制定了系统日志协议并参考 RFC 3339 的时间戳)“1. 简介”

本文档描述了 syslog消息的标准格式并
概述了传输映射的概念。它还描述了
结构化数据元素,可用于传输易于
解析的结构化信息,并允许供应商扩展。

本文档不描述系统日志
消息的任何存储格式。它超出了 syslog 协议的范围,
对于系统互操作性来说是不必要的。

这里的消息是指要记录的内容,而不是记录格式。 换句话说:日志不是消息,RFC 是关于消息的,而不是日志。

您看到的内容/var/log/syslog是“存储格式”消息。该格式取决于您如何配置特定系统日志,并且正如序言所述,那里没有任何协议的真正必要性,至少就“系统互操作性”而言。

Syslog 守护进程可以作为多个系统的记录器。RFC 旨在设置一个标准,以便兼容系统可以登录到远程系统日志,而不管正在使用哪种特定实现等。

接收此类消息的 syslog 守护进程随后会将它们写入文件,但它不会逐字写入——而是根据其配置写入它们。如果您进一步查看 RFC,您会注意到有很多很多方式/var/log/syslog不符合要求。看看第 6 节开头的ABNF —— 这不仅仅是描述日志文件中的一行(注意时间戳不是第一项!)。这是用于序列化消息以进行传输的结构化格式。