谷歌云控制台日志中的正则表达式

26

如何使用正则表达式在新的Cloud Console中搜索Google App Engine日志?

这篇博客文章建议只需键入regex:my.*query即可进行搜索,但是在日志控制台中似乎无法使用该命令。当我尝试这样做时,它会自动更正为以下查询:text:regex:my.*query

3个回答

21

虽然我来晚了,但你可以在 Stackdriver 中完成它。

=           # equal
!=          # not equal
> < >= <=   # numeric ordering
:           # "has" matches any substring in the log entry field

如果你想查找textPayload中所有GET响应为500的情况,你需要添加筛选条件:

textPayload:"500"

搜索所有包含central1zone:

resource.labels.zone:"-central1-"

就是这样。您可以参考此链接以获取更多高级过滤器


7
这不是正则表达式。 - avmohan
2
@avmohan 是的,但它有助于找到模式。虽然不是确切的答案,但总比没有好。对我很有帮助 :) - Shashank Vivek

19

如今,Google Cloud Operations Logging支持正则表达式。该功能于2020年9月17日发布,详见https://cloud.google.com/blog/products/management-tools/cloud-logging-gets-regular-expression-support。您的正则表达式需采用以下格式:

textPayload=~"my.*query"
您可以使用运算符=~查询正则表达式匹配,使用运算符!~查询非匹配项:
=~          # regular expression search for a pattern
!~          # regular expression search not for a pattern

有关语法和示例的更多信息,请参阅Google Cloud Operations Suite日志查询语言参考:https://cloud.google.com/logging/docs/view/logging-query-language#regular-expressions


9
Stackdriver Logging产品目前不支持正则表达式。虽然在博客文章中曾经支持过,但我们发现它很少被使用,并且许多用途是针对有简单解决方案而不需要正则表达式的简单模式。
在基本过滤模式(默认情况下),文本搜索自动是不区分大小写的,并匹配字段值的子字符串,您可以使用“..”表示数字范围。在高级过滤模式下,“has”运算符通过在筛选表达式中使用“:”而不是“=”来实现相同的功能,例如:path.to.field:“value”。 (另请参见:编写有效的高级过滤器
如果这些运算符不能实现您的目标,请考虑通过Cloud Console右上角的气泡按钮提交反馈,提供您的用例细节和最终目标,我们将在规划产品未来方向时考虑这些反馈意见。

嗯,我一直在使用正则表达式。有没有什么简单的方法可以将两个搜索条件“AND”在一起呢?例如,我想要搜索 user1@example.comtimeout,即使这些词语不是紧挨着的。 - speedplane
1
好的,谢谢。在简单模式下默认使用OR运算真的让我感到困惑。我从来没有见过一个搜索界面默认将术语一起进行OR运算。如果您可以在不进入高级模式的情况下添加搜索术语,那就太好了。 - speedplane
1
这是一个非常混乱的搜索界面,团队是否考虑过只使用AND呢?几乎所有的搜索引擎(例如Google)都是这样工作的。 - speedplane
1
是的,严谨地说,我相信谷歌的搜索算法比ANDing术语更复杂。 话虽如此,通常情况下,更多的搜索词会导致更窄的结果。 除了Cloud Console之外,我不确定是否见过反向操作的搜索栏。 - speedplane
没必要用 OR,个人观点。同样的反馈,改用 AND。 - Jonas K
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接