19

我们使用 AWS CloudWatch Logs 来调试我们在 AWS 上运行的服务,并且我们日志中的许多属性名称使用冒号作为分隔符,但我们无法弄清楚如何使用这些属性名称进行搜索。

这是一个日志示例:

{
  "Counts": {
    "RouteHandler:GetCookies": {
      "value": 1
    }
  }
}

使用控制台,我尝试了这样的查询:

{ $.Counts.RouteHandler:GetCookies.value = 1 }

当然,特殊字符通常在查询语言和其他语言中有特定用途,所以我试图以某种方式对其进行转义。

{ $.Counts.RouteHandler\:GetCookies.value = 1 }
// JavaScript inspired
{ $.Counts["RouteHandler:GetCookies"].value = 1 }
// Special character removed
{ $.Counts.RouteHandlerGetCookies.value = 1 }

我想不出什么都行,也许这是不可能的。文档似乎没有解决这种情况。

任何人都知道如何搜索属性包含特殊字符的 JSON 日志,或者明确知道这是否受支持?

在新的工作中,我们将使用不同的分隔符,但我们不会返回并在任何地方更改它。

4

1 回答 1

3

在撰写本文时,这是不可能的。AWS 可能会在某个时候解决这个问题,但目前唯一的解决方法是使用非 JSON 语法并搜索确切的字符串。以下过滤器:

"\"RouteHandler:GetCookies\": {\"value\": 1}"

将匹配此日志事件:

{"Counts": {"RouteHandler:GetCookies": {"value": 1}}}

显然,缺点是空格和位置很重要。

于 2019-02-06T20:28:10.997 回答