firebase - 在 Firebase Cloud Functions 中记录 'jsonPayload'

标签 firebase google-cloud-functions stackdriver

TL;博士;

有谁知道是否可以使用console.log在 Firebase/Google Cloud 函数中使用 jsonPayload 将条目记录到 Stack Driver属性,所以我的日志是可搜索的(目前我传递给 console.log 的任何内容都被字符串化为 textPayload )。

我有一个多模块项目,其中一些代码在 Firebase Cloud Functions 上运行,还有一些在其他环境(如 Google Compute Engine)中运行。稍微简化一下,我基本上有一个“核心”模块,然后我将“云功能”模块部署到云功能,将“后端服务”部署到 GCE,这些都依赖于“核心”等。

我在整个“核心”模块中使用 bunyan 进行日志记录,当部署到 GCE 时,记录器是使用“@google-cloud/logging-bunyan”配置的,因此我的日志会转到 Stack Driver。

另外:在 Google Cloud Functions 中使用此配置会导致 Error: Endpoint read failed 出现问题我认为这是由于功能不会变冷并试图重用死连接,但我不能 100% 确定真正的原因是什么。

所以现在我正在尝试使用 console.log(arg) 登录在哪里 arg是一个对象,而不是一个字符串。我希望这个对象出现在 jsonPayload 下的堆栈驱动程序中但它正在被字符串化并放入 textPayload field 。

最佳答案

我花了一段时间,但我终于遇到了this examplefirebase functions samples repository .最后我决定了一些像这样的东西:

const Logging = require('@google-cloud/logging');
const logging = new Logging();
const log = logging.log('my-func-logger');
const logMetadata = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: process.env.FUNCTION_NAME ,
      project: process.env.GCLOUD_PROJECT,
      region: process.env.FUNCTION_REGION
    },
  },
};
const logData = { id: 1, score: 100 };
const entry = log.entry(logMetaData, logData);
log.write(entry)

您可以添加一个字符串 severity属性值为 logMetaData (例如“信息”或“错误”)。 Here is the list的可能值。

可用节点 10 环境变量的更新。这些似乎可以解决问题:
labels: {
  function_name: process.env.FUNCTION_TARGET,
  project: process.env.GCP_PROJECT,
  region: JSON.parse(process.env.FIREBASE_CONFIG).locationId
}

更新 : 对于 Node 10 运行时,他们希望您使用 set env values explicitly在部署期间。我想有一个宽限期,因为我部署的功能仍在工作。

关于firebase - 在 Firebase Cloud Functions 中记录 'jsonPayload',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49185824/

相关文章:

node.js - Google Cloud Function/NodeJS - 从 JSON 表单事件中解析 int

google-apps-script - Stackdriver 日志记录 - 为什么我的负载在运行时 V8 中没有正确显示

ios - 使用唯一ID推送到Firebase

swift - Firebase Cloud Firestore - 初始化集合

javascript - 如何在 then 语句中定义 firebase 云函数触发器

javascript - 如何保证函数的执行是有序的?

kubernetes - 使用 GKE 中的日志记录自定义指标进行水平 Pod 自动缩放

stackdriver - 以百分比显示计数

javascript - React - 父级未将方法传递给子级

javascript - 获取图像 url Firebase 存储(管理员)