【发布时间】:2018-03-09 02:45:51
【问题描述】:
TL;DR;
有谁知道是否可以在 Firebase/Google Cloud 函数中使用 console.log 使用 jsonPayload 属性将条目记录到堆栈驱动程序,以便我的日志可以搜索(目前我传递给 console.log 的任何内容都会被字符串化为textPayload)。
我有一个多模块项目,其中一些代码在 Firebase Cloud Functions 上运行,一些在其他环境中运行,例如 Google Compute Engine。稍微简化一下,我基本上有一个“核心”模块,然后我将“云功能”模块部署到 Cloud Functions,将“后端服务”部署到 GCE,这些都依赖于“核心”等。
我在整个“核心”模块中使用 bunyan 进行日志记录,当部署到 GCE 时,记录器是使用“@google-cloud/logging-bunyan”配置的,因此我的日志会转到 Stack Driver。
除此之外:在 Google Cloud Functions 中使用此配置会导致 Error: Endpoint read failed 出现问题,我认为这是由于函数不会变冷并试图重用死连接,但我不能 100% 确定真正的问题是什么原因是。
所以现在我尝试使用console.log(arg) 记录,其中arg 是一个对象,而不是字符串。我希望这个对象出现在堆栈驱动程序中的jsonPayload 下,但它正在被字符串化并放入textPayload 字段中。
【问题讨论】:
-
是的,这就是我的 "Aside: ..." 所指的。我可以尝试调试
Error: Endpoint read failed发生的原因,但这可能需要遵循他们关于使用console.log的文档,如此处所述cloud.google.com/functions/docs/monitoring/logging -
看来console.log(arg) 不支持JsonPayload。你应该坚持使用 Bunyan 并调试错误。
标签: firebase google-cloud-functions stackdriver