如何在 Seq 中查询 json 文件?
How can I query a json file in Seq?
我对日志记录完全陌生,但熟悉 SQL 查询。我现在正在试验 Serilog 和 Seq。我设法用 Serilog 制作了 JSON 行日志文件,并可以通过 seqcli ingest -i
命令将文件导入 Seq。我可以查询我的流,但方式非常有限。例如
select * from stream
如下截图所示(示例文件是Seq自己的日志):
我还可以查询@Timestamp、@Arrived 和@Data 列,如
select @Timestamp, @Arrived, @Data from stream
但我不知道如何访问@Data 中的属性。我期待
select @Timestamp, @Arrived, @Data.@mt.@mt.UserId from stream
但这不起作用。我如何列出例如 @Data.@mt.@mt.UserId 值?
更新
有趣的是,Seq 显示的不是文件的原始内容。这部分:
在原始文件中看起来就像这样:
{"@t":"2022-03-30T14:24:49.0999009Z","@mt":"Creating default workspace for {UserId}","UserId":"user-admin"}
所以,关于这一点,我希望
select @mt.UserId from stream
或一些类似的查询工作。
使用seqcli ingest
导入时需要指定--json
,例如:
seqcli ingest -i ./some.log --json
我对日志记录完全陌生,但熟悉 SQL 查询。我现在正在试验 Serilog 和 Seq。我设法用 Serilog 制作了 JSON 行日志文件,并可以通过 seqcli ingest -i
命令将文件导入 Seq。我可以查询我的流,但方式非常有限。例如
select * from stream
如下截图所示(示例文件是Seq自己的日志):
我还可以查询@Timestamp、@Arrived 和@Data 列,如
select @Timestamp, @Arrived, @Data from stream
但我不知道如何访问@Data 中的属性。我期待
select @Timestamp, @Arrived, @Data.@mt.@mt.UserId from stream
但这不起作用。我如何列出例如 @Data.@mt.@mt.UserId 值?
更新
有趣的是,Seq 显示的不是文件的原始内容。这部分:
{"@t":"2022-03-30T14:24:49.0999009Z","@mt":"Creating default workspace for {UserId}","UserId":"user-admin"}
所以,关于这一点,我希望
select @mt.UserId from stream
或一些类似的查询工作。
使用seqcli ingest
导入时需要指定--json
,例如:
seqcli ingest -i ./some.log --json