JSON解析日志条目

时间:2020-07-03 00:29:44

标签: azure azure-log-analytics

我正在使用OMS-Docker来监视我正在运行的Docker容器的stdout和stderr。我将输出格式化为JSON输出,以便可以解析它并更轻松地搜索日志。 查看登录时,它看起来像这样:

2020-07-02T23:34:24.130271534Z {\"level\":\"debug\",\"ts\":1593732864.1298144,\"caller\":\"services...

显然OMS添加了时间戳,因此我无法直接解析json。

ContainerLog
| extend replaced = replace(@"[\\]", @"", LogEntry)
| extend parsedLogs = parse_json(extract("{(.*):[^{}]*}", 0, replaced))
| where parsedLogs.level == "debug"
| sort by TimeGenerated desc

首先,我需要删除所有反斜杠,然后使用json提取正则表达式以对其进行解析。我认为这不是一个非常优雅的解决方案,有没有一种发送日志的方式,也就是docker容器输出日志的方式?

1 个答案:

答案 0 :(得分:0)

我开发了一个命令行工具来查看json日志(请参见https://github.com/qiangyt/jog)。就像'tail -f log-file'一样,但是它用于json日志。

通过从转义的双引号中删除反斜杠来支持OMS-docker。

我不太确定您期望什么输出。当前,此工具输出平坦的规则线。您是否要删除反斜杠的输出JSON?如果是这样,请告诉我,我很容易对其进行更新以支持它。