java - 如何使用 Java 客户端库将分类和分组的日志发送到 Stackdriver?

标签 java google-app-engine google-cloud-platform stackdriver

我想将多个 log.info log.warninglog.error 调用以及可能的堆栈跟踪聚合到一个服务器与我的应用程序代码交互生成的单个 Stackdriver 日志行。目标是总结我的 Scala 服务器处理的请求,然后将其执行期间发生的尽可能多的日志语句(包括任何错误)分组。

这是 GAE 日志记录的默认行为,但因为我刚开始阅读 Java API's ,我无法弄清楚如何:

1/创建一个自定义 MonitoredResource (?) 表示“API 服务器”,然后指定其中的类别(例如“生产”)。具体来说,我是否必须通过 REST API 创建这些,即使我只为部署执行一次?我可以使用类似 Troposphere 的东西吗?在代码中定义它们并将它们提交到存储库中?

2/名词 MonitoredResourceMonitoredResourceDescriptorLogEntryLogEntryOperationlogName 的用法code> 组合在一起,定义类别“API Server”和“生产”,以及可以添加像 GET/foobar -> 200 response + 1834 bytes 这样的日志语句组(是那些日志名称?)。

当然,不需要为我编写代码,但如果能提供指导和高级概述来帮助我避免反复试验,我将不胜感激。

最佳答案

您可以使用 LogEntry ( https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogEntryOperation ) 中的 LogEntryOperation 字段将同一操作的多个日志条目分组在一起。

在日志查看器中,您可以通过使用高级过滤器对 operation.id 字段进行过滤来对日志条目进行分组。

在 Java 客户端库中,您可以使用 https://googlecloudplatform.github.io/google-cloud-java/0.33.0/apidocs/com/google/cloud/logging/LogEntry.Builder.html#setOperation-com.google.cloud.logging.Operation- 设置操作 ID

1) 您可以使用的受监控资源是由 Google 定义的精选集。您无法定义自己的类型。 https://cloud.google.com/logging/docs/api/v2/resource-list 中列出了支持的资源。 .

2) 基本概念在https://cloud.google.com/logging/docs/basic-concepts中描述。 .

关于java - 如何使用 Java 客户端库将分类和分组的日志发送到 Stackdriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575364/

相关文章:

mysql - 用户 'root' @'external ip' 的访问被拒绝(使用密码 : YES)

java - Spring Boot 2 中无法识别 MappingJackson2HttpMessageConverter 配置

java - 从具有访问限制的共享位置读取文件 (java)

对于相同的数据包大小,Java DatagramSocket receive() 比 send() 花费更多时间

python -/_ah/queue/deferred 奇怪的导入错误

google-cloud-platform - 从 NodeJS 应用程序为 MYSQL 使用云 sql 时出现错误 : connect ECONNREFUSED 127. 0.0.1:3306

java - PMD "Bean Members Should Serialize"规则。我们可以用更聪明的方式来做吗?

java - 我的服务器端有很多 @Get 的 ReSTLet

google-app-engine - 谷歌应用引擎中队列的 'bucket-size' 是什么意思?

kubernetes - 找不到Kubectl wait命令