我一直在尝试让 StackDriver 错误报告在我的 golang 项目上工作。 我正在 GCE 中的虚拟机上运行日志记录代理。无论我尝试什么模式,它似乎都没有拾取它,尽管它拾取了一些堆栈跟踪的随机位,这似乎是这样的
/^go:.*/
下面是堆栈驱动程序发现的错误示例,以及它是如何被破坏的。
原始标签
router.go:16: goroutine 47 [running]:
github.com/org/repo/baserouter.RecoverFromPanic.func1.1(0x15267e0, 0xc420056340)
/home/myuser/go/src/github.com/org/repo/baserouter/router.go:14 +0xe2
panic(0xf6c320, 0xc4200120b0)
/opt/go-1.7.1/src/runtime/panic.go:458 +0x271
标题
go: 16
已解析的堆栈跟踪选项卡
“不可用”
如何通过代理注销错误和堆栈跟踪,以便 StackDriver 拾取它并正确解析它?
现在回答有点晚了,但因为我在搜索自己时偶然发现了这一点:here详细介绍了使 stackdriver 日志记录自动触发错误报告所需的步骤。 由于未指定的“堆栈跟踪检测器”不会将 go 错误捕获为正确的堆栈跟踪,因此您可以将
"@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent"
键/值对添加到日志中(假设您使用 json 日志记录而不是文本日志记录。
对我自己来说不幸的是,我还发现此功能与区域化日志存储桶不兼容,这对我来说是一个破坏者。