首页 > 解决方案 > Aws CloudWatch 过滤带有 @ 的紧凑 json

问题描述

我们使用 serilog 从我们的 .nrt 核心应用程序输出。我们正在使用紧凑的 json 来减小大小。在紧凑的情况下,它似乎将错误键与@符号放在一起;

"@l": "警告"

我似乎无法让过滤器正常工作,它要么不返回结果,要么说错误。我已经尝试了很多东西,但我确信这应该有效;

{ $.@l = "警告" }

任何人都建议我要去哪里错。

标签: amazon-web-servicesamazon-cloudwatch

解决方案


我认为您不能@在选择器中使用。从文档:

属性选择器是字母数字字符串,也支持“-”和“_”字符。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#extract-json-log-event-values

解决这个问题的一种方法是匹配该行,就好像它不是 json 的一部分。

例如,如果您的日志行如下所示:

"@l": "Warning"

您可以使用以下方法将其过滤掉:

[key="@l", colon, value=Warning]

推荐阅读