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

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

为什么Linux syslog文件:/var/log/syslog不遵循协议中定义的时间戳格式https://www.rfc-editor.org/rfc/rfc5424#page-11

答案1

来自 RFC 5424(它规定了系统日志协议并参考 RFC 3339 的时间戳)「一、简介」:

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

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

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

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

Syslog 守护进程可以充当多个系统的记录器。 RFC 旨在设置一个标准,以便兼容系统可以记录到远程系统日志,无论使用哪种特定实现等。

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

相关内容