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

时间:2018-02-02 03:40:09

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

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

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

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

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

当然,不需要为我编写代码,但是我会非常感谢指针和高级概述以节省我的试验和错误。

2 个答案:

答案 0 :(得分:1)

1)MonitoredResource监控您在MonitoredResourceDescriptor

中配置的内容

我假设您可以随意创建它(REST API或客户端库)。

2)我不确定您要在哪里描述“API服务器”或“生产”,MonitoredResourceDescriptor是如何设置要监控的内容。 LogEntry是实际日志,LogName只是您为此特定日志提供的标签。你所描述的应该是logEntry返回的东西(200代码+其他东西)。

我可能会对你的要求感到有些困惑。最好的办法是创建一个MonitoredResource示例,看看它是如何工作的。

答案 1 :(得分:1)

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

在日志查看器中,您可以使用高级过滤器在private字段上进行过滤,对日志条目进行分组。

在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中描述。