用于编写JSON日志文件的格式?

chi*_*org 24 syntax standards logging json

是否有编写和解析JSON日志文件的格式标准?

我看到的问题是你不能有一个"纯"的JSON日志文件,因为你需要匹配括号和尾随逗号是被禁止的.因此,虽然以下内容可能由应用程序编写,但它无法通过标准进行解析JSON parsers:

[{date:'2012-01-01 02:00:01', severity:"ERROR", msg:"Foo failed"},
{date:'2012-01-01 02:04:02', severity:"INFO", msg:"Bar was successful"},
{date:'2012-01-01 02:10:12', severity:"DEBUG", msg:"Baz was notified"},
Run Code Online (Sandbox Code Playgroud)

因此,您必须有一些关于如何以解析器可以处理它们的方式构造日志文件的约定.最简单的事情是"每行一个日志消息对象,字符串值中的换行符被转义".有没有现有的标准和工具?

Her*_*CSO 20

你不会为每个FILE编写一个JSON对象,你将为每个LINE编写一个JSON对象.然后可以单独解析每一行.您不必担心尾随逗号,并且用括号等括起整个对象集.请参阅http://blog.nodejs.org/2012/03/28/service-logging-in-json-with- bunyan /有关这个样子的详细解释.

还可以访问Fluentd http://fluentd.org/获取一个可以使用的简洁工具集.

  • 正如我所说,JSON将以每行为基础进行解释.我并不是说你将整个日志文件作为一个巨大的JSON blob,它会变得很大并且会让大多数JSON解释器瘫痪,因为他们必须为此创建一堆对象.相反,每行解析出来然后你就可以在文件的每一行都有完全有效的JSON.那么如果整个文件无效JSON作为一个完整的大对象呢?无论如何,你不会想要那样的. (10认同)
  • 该日志格式被各种日志记录应用程序称为JSON-lines.Logstash例如:https://www.elastic.co/guide/en/logstash/current/plugins-codecs-json_lines.html (4认同)