我们使用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日志,或者明确知道是否支持此字符?
在新工作中,我们将使用不同的定界符,但我们不会回过头来在任何地方进行更改。
在撰写本文时,这是不可能的。 AWS可能会在某个时候解决该问题,但是目前唯一的解决方法是使用非JSON语法并搜索确切的字符串。以下过滤器:
"\"RouteHandler:GetCookies\": {\"value\": 1}"
将匹配此日志事件:
{"Counts": {"RouteHandler:GetCookies": {"value": 1}}}
显然缺点是空白和位置很重要。