我希望我的程序向它的 stderr 写入一个同时是人类和机器可读的日志。
要求:
- 日志是消息流。即我不能只写一个大的 xml 或 json 文档。每条消息都必须可以单独解析,而不需要增量解析器或生成器。
- 就本问题而言,tty 检测和日志格式选择开关被视为作弊。我希望相同的精确输出同时是人类和机器可读的。
- 由于与 2 相同的原因,没有后处理
- 没有临时格式。我不希望消费者必须编写解析器。连一点小事都没有。
- 没有太晦涩的格式。必须有一个库来解析前 10 种最流行的通用编程语言中的这种格式,并且该库必须能够将整个日志解析为开箱即用的消息流,而无需消费者处理数据。
Pretty JSON 失败 5 - 大多数 JSON 解析 API 无法解析多个连接的 JSON 文档。
JSON Lines不是人类可读的,尤其是当它包含嵌套数据时,因为整个日志条目最终都在一行上。
看来application/json-seq (RFC 7464)确实允许 JSON 文本打印得很漂亮(人类可读),同时只需要在常规 JSON 解码器之上进行非常简单的解析。这是迄今为止最接近的一个。
验尸
我最终重新考虑了我的方法:记录jsonlines - 最容易生成和使用,使用外部漂亮打印机进行后处理,例如jq .
供人类使用。