根据 textPayload 设置 Stackdriver 严重性

根据 textPayload 设置 Stackdriver 严重性

我们的开发人员创建了一个内部 Java 应用程序,用于log4j格式化其日志消息。最近,我们开始在 Google Kubernetes Engine 上运行它,因此日志会自动从 stdout 传输到 Stackdriver。但是,所有日志都显示严重性级别INFO。其中一条消息有一个 textPayload,其开头如下:

18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]

显然,开发人员的意图是这是一个ERROR严重性消息,但由于他们在构建应用程序时没有考虑 Stackdriver,因此它是非结构化的并被报告为INFO严重性消息。

必须更改应用程序以遵守我们使用的集中式日志记录,这感觉不对;我们的客户可能会使用其他日志记录解决方案。有没有办法让 Stackdriver 使用 textPayload 来确定严重性?我在 Google Kubernetes Engine 上运行,所以我没有设置任何日志记录基础设施,也没有对 Google 提供的内容以外的任何访问权限。

我之所以想要进行此更改,是因为 Google Cloud Platform 的错误报告功能是跟踪错误消息的强大工具,但它仅适用于严重程度为ERROR或更高的日志。简单地在 Stackdriver 中创建日志指标并不能给我带来我想要的控制。

答案1

简单的回答是“不”,您需要更改代码并实现正确的日志记录,并为每条消息设置正确的严重性。您可以将 Stackdriver 日志导出到 BigQuery,这是很正常的,然后运行更复杂的查询。

您可以在这里找到一些有用的链接:

https://cloud.google.com/logging/docs/export/bigquery

https://cloud.google.com/logging/docs/structured-logging

相关内容