结合尾部-F和json

osd*_*sdf 8 json tail

我的日志文件每行有一个json对象.我用[json] [1]来获取人类可读的输出

cat mylog.log | json -a field1 field2
Run Code Online (Sandbox Code Playgroud)

现在我想拥有

tail -F mylog.log | json -a field1 field2
Run Code Online (Sandbox Code Playgroud)

为了连续输出.但这似乎不起作用,shell只是挂起.如果我&|用来避免缓冲问题,输出就像我只运行一样cat.

mylog.log 看起来像这样:

{"field1": entry1a, "field2": entry2a, "field3": entry3a}
{"field1": entry1b, "field2": entry2b, "field3": entry3b}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

[1] https://github.com/trentm/json

Jak*_*cil 13

它看起来像json 首先将整个加载stdin到缓冲区中然后才处理数据,但是您仍然可以通过为添加到日志文件的每一行调用它来实现流处理,如下所示:

tail -F mylog.log | while read line; do echo "$line" | json -a field1 field2; done
Run Code Online (Sandbox Code Playgroud)