2

我正在寻找用 JSON 编写日志文件。

在查看了一些用于格式化灵感和最佳实践的库(Node.JS 的 Winston、Apache 的 JSON 日志记录选项等)之后,我注意到几乎所有这些库都编写多个根元素,而不是使用数组或根元素。

例子:

{"time":"2012-09-20T20:27:59Z","level":"info","message":"Hello World"} {"time":"2012-09-20T21:37:59Z" ,"level":"info","message":"Hello Again"}

对比

[{"time":"2012-09-20T20:27:59Z","level":"info","message":"Hello World"},{"time":"2012-09-20T21:37: 59Z","level":"info","message":"Hello Again"}]

为什么在技术上具有多个根元素的 JSON 无效时会这样做?

4

2 回答 2

4

记录时,您会不断添加新的日志条目。你怎么知道什么时候关闭数组?您的日志记录何时“完成”?你可以用一个空数组开始日志[],但是当添加一个条目时,你必须继续在文件中寻找正确的位置,并检查是否需要逗号。

或者您只需将每个条目写为一个单独的根对象,每次您写出一些内容时,它都是独立的并附加到文件的末尾。这要简单得多。

日志不是单个 JSON 对象,即整个日志没有形成有效的 JSON 字符串。它是一系列独立的 JSON 对象。各个条目是您应该考虑的单位,而不是整个日志。

于 2013-01-08T02:50:41.767 回答
0

因为日志每秒都在增加。

如果没有 Root 元素,新日志只能附加旧项目。如果有一个根元素,或者在一个数组中,你必须查询新的日志项,并附加它。

所以,你有正确的选择。

于 2013-01-08T02:52:35.007 回答