1

我正在使用lnav在我们创建的自定义日志文件之上进行过滤和查询。由于这是一个自定义日志文件,我需要创建一个自定义格式文件并使用以下命令安装它来定义日志条目的结构。

lanv -i custom_format.json

自定义格式 JSON:https ://pastebin.com/z7sCVqxd

尽管这是在高级别的工作,但我还想使用正文 JSON 中存在的参数应用过滤器。

我在自定义格式化程序中提到的 body 参数是 JSON。并非整个日志条目都是 JSON,只有 body 参数值是 JSON。,在 body 参数中,仅存在日志级别、消息和其他有用信息。

是否可以使用类似的东西,

"level-field" : body.level,
"level" : {
      "error" : "error",
      "warning" : "info"
},

以及如何定义从body json到Value的其他参数来定义“种类”和“标识符”

谢谢

4

1 回答 1

1

到目前为止,我已经分析过我找不到任何直接的解决方案。我浏览了 lnav 的文档(这里),发现很少有可用的 JSON 函数可用于从基于 JSON 的列中提取数据。

with mylog as (select jobserver, workqueue, processid, jget('{"' || col_0 || '"}','/LEVEL') level, jget('{"' || col_0 || '"}','/PREFIX') pid, jget('{"' || col_0 || '"}','/MESSAGE') message from logline) select * from mylog where processid = 358812 limit 1

这暂时解决了问题。但我仍在寻找 lnav API 本身的支持。

于 2021-03-22T15:48:40.137 回答