Timestamps
為什麼 Linux syslog 文件不遵循 RFC3339 協議?
為什麼 Linux syslog 文件:/var/log/syslog 不遵循協議https://www.rfc-editor.org/rfc/rfc5424#page-11中定義的時間戳格式?
來自 RFC 5424(它制定了 syslog 協議並參考 RFC 3339 獲取時間戳)“1. Introduction”:
本文件描述了系統日誌消息的標準格式並
概述了傳輸映射的概念。它還描述了
結構化數據元素,可用於傳輸易於
解析的結構化資訊,並允許供應商擴展。
**本文件未描述 syslog消息的任何儲存格式。它超出了 syslog 協議的範圍,
對於系統互操作性來說是不必要的。**
這裡的消息**是指要記錄的內容,而不是記錄的格式。 換句話說:日誌不是消息,RFC 是關於消息的,而不是日誌。
您看到的內容
/var/log/syslog
是“儲存格式”消息。該格式取決於您如何配置特定的系統日誌,並且正如前言所述,至少就“系統互操作性”而言,沒有任何協議的真正必要性。Syslog 守護程序可以作為多個系統的記錄器。RFC 旨在設置一個標準,以便兼容的系統可以記錄到遠端系統日誌,而不管正在使用哪個特定實現等。
接收此類消息的 syslog 守護程序隨後會將它們寫入文件,但它不會逐字寫入它們 - 它會根據其配置寫入它們。如果您進一步查看 RFC,您會注意到有很多很多
/var/log/syslog
不符合要求的方式。看看第 6 節開頭的ABNF —— 這並不僅僅是描述日誌文件中的一行(注意時間戳幾乎不是第一項!)。這是用於序列化消息以進行傳輸的結構化格式。