在 lnav 日志文件导航器的自定义格式化程序中访问 json 正文参数

问题描述

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

# Method 1
root.bind('<Control-n>',ExampleFunction)

# Method 2
root.bind('<Control-Key-n>',ExampleFunction)

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

虽然这是在高层次上工作,但我还想使用主体 JSON 中存在的参数来应用过滤器。

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

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

lanv -i custom_format.json

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

谢谢

解决方法

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

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

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