在JSON属性名称

时间:2017-03-27 21:18:46

标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

我们使用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 }

我无法想出任何工作,也许这是不可能的。 The docs似乎没有解决这种情况。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

将匹配此日志事件:

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

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