2013-01-08 58 views
2

我正在尋找以JSON編寫日誌文件。作爲JSON記錄 - 標準是多根元素,爲什麼?

在一些庫尋找靈感格式化和最佳實踐後(溫斯頓於Node.js,Apache的JSON記錄選項,等等),我注意到,幾乎所有的人寫的多根元素與使用數組或根元素。

例子:

{ 「時間」: 「2012-09-20T20:27:59Z」, 「水平」: 「信息」, 「消息」: 「Hello World」 的} { 「時間」:」 2012-09-20T21:37:59Z 「 」水平「: 」信息「, 」消息「: 」你好再次「}

[{ 」時間「:」 2012-09-20T20 :27:59Z「,」level「:」info「,」message「:」Hello World「},{」time「:」2012-09-20T21:37:59Z「,」level「:」info「消息「:」又見面了「}]

這是爲什麼時,在技術上它不是有效的JSON有多個根元素做了什麼?

+0

你回答了你自己的問題,不是嗎?只需要生成一個有效的JSON; – fge

回答

4

登錄時您不斷添加新的日誌條目。你怎麼知道什麼時候關閉陣列?您的日誌記錄何時「完整」?您可以使用空數組開始日誌記錄,但是當添加條目時,您必須繼續在文件中尋找以找到正確的位置,並檢查是否需要逗號。

或者你的只寫每個條目作爲獨立的根對象,並在每次寫的東西超時它是獨立的,並追加到文件的末尾。這簡單得多。

日誌不是單一的JSON對象,即整個日誌不形成有效的JSON字符串。它是一系列獨立的JSON對象。單個條目是您應該考慮的單位,而不是整個日誌。

+1

完整的意義,並沒有從流媒體的角度來考慮。在我的應用程序中,我只在長時間事務完成後才寫入日誌文件。鑑於前面所述,我應該考慮使用數組(或單根元素),因爲它可能,還是應該與常見模式保持一致,因爲工具/腳本很可能已經演變並適應了所述模式? – vgort

0

因爲日誌每秒都在增加。

沒有根elemet,新的日誌可能只是舊的項目添加。 如果有一個根元素,或者在一個數組中,您必須查詢新的日誌項目並追加它。

所以,你有正確的選擇。

相關問題