gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:55:33 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com