通过尾部格式化和打印漂亮的日志

时间:2019-07-04 17:36:42

标签: json logging grep jq tail

我有一个经常检查的日志文件,由于它的格式,打印漂亮时,它很容易阅读。我想这样做。

以以下方式登录文件:

\r\r\n\n

我想做类似的事情

2019-07-04T09:53:04-07:00   some.package.placeholder.stderr {"log": "The content", "foo": "bar", "baz": "blah"}
2019-07-04T10:15:37-07:00   some.package.placeholder.stderr {"log": "I'm actually", "foo": "bar", "baz": "blah"}
2019-07-04T10:15:37-07:00   some.package.placeholder.stderr {"log": "Interested on", "foo": "bar", "baz": "blah"}

所以拖尾时我得到:

tail -f myLogFile | grep [...?...] | jq '.log'

甚至:

The content
I'm actually
Interested on

2 个答案:

答案 0 :(得分:3)

使用-o的GNU grep:

$ tail file | grep -o '{[^}]*}' | jq -r '.log'
The content
I'm actually
Interested on

任何awk:

$ tail file | awk 'sub(/.*{/,"{")' | jq -r '.log'
The content
I'm actually
Interested on

$ tail file | awk '{d=$1} sub(/.*{/,""){$0="{\"date\": \""d"\", " $0} 1' | jq -r '.date + " " + .log'
2019-07-04T09:53:04-07:00 The content
2019-07-04T10:15:37-07:00 I'm actually
2019-07-04T10:15:37-07:00 Interested on

最后一个方法是将输入中的日期字段合并到json中,以便jq可以选择它并将其与日志字段一起打印。

答案 1 :(得分:1)

如果日志行由制表符分隔,则可以读取原始行并在制表符上拆分行。然后您可以解析json并过滤到您的hearts内容,并根据需要重新组合。

>>> html_to_text('<b>Hello <i>world!')
'Hello world!'

>>> html_to_text('<a href="google.com">some <faketag>text')
'some text'