我有一个Web应用程序,我想跟踪其崩溃报告。 我可以为此使用Firebase crashlytics或Fabric。在他们的网站中,它只提到了Android或ios。
关于, 马克兰德
答案 0 :(得分:1)
显然,Sentry现在支持多种Web框架。 我最近为Django App集成了Sentry crashlytics。
请参阅此处: https://sentry.io/platforms/
答案 1 :(得分:1)
虽然仍然没有用于网络的 firebase crashlytics,但 google 为 Stackdriver 提供了错误报告功能 - 它跟踪所有错误并能够将它们标记为已解决(它还可以发送有关新错误的电子邮件通知):
您可以使用以下网址访问它(请确保在点击之前将您的 firebase {project_id}
放在链接中):
https://console.cloud.google.com/errors?project={project_id}
有两种使用方法:
您的 firebase 函数报告的每个 console.error(new Error(...))
都会在 Stackdriver 错误日志记录平台中自动跟踪。
因此,您只需要将错误报告从您的网络应用程序发送到您的 firebase 函数,并在该函数内使用 console.error
进行记录。
请注意,只有 Error 对象的实例会被发送到 Stackdriver 平台。例如,console.error("{field1: 'text'}")
不会发送到 Stackdriver。有关该 in this doc
这里是一个关于如何使用它的快速片段(在我们的例子中,我们首先将错误日志从 Web 应用程序发送到我们的服务器,然后将错误报告给 Stackdriver):
在 firebase nodejs 中:
const {ErrorReporting} = require('@google-cloud/error-reporting');
let serviceAccount = {...} //service account is your firebase credetials that holds your secret keys etc. See below for more details.
let config = {
projectId: serviceAccount.project_id,
reportMode: "always",
credentials: serviceAccount
}
let errors = new ErrorReporting(config);
从 nodejs 向 Stackdriver 报告错误:
async function reportError(message){
//message is a string that contains the error name with an optional
//stacktrace as a string representing each stack frame separated using "\n".
//For example:
//message = "Error: Oh-hoh\n at MyClass.myMethod (filename.js:12:23)\n etc.etc."
const errorEvent = this.errors.event()
.setMessage(message)
.setUser(userId)
.setServiceContext("web-app", "1.0.0")
await errors.report(errorEvent)
}
有关 Stackdriver 库的更多信息,请参见 in this doc。可以找到有关堆栈跟踪及其格式的更多信息in the docs here
关于设置的一些注意事项:
您需要启用两件事:
要授予权限,请按照以下步骤操作:
首先使用您的 firebase 仪表板链接(您可以在下面找到它)找到“Firebase 服务帐户”并记住它的价值 - 它看起来像 firebase-adminsdk-{random_symbols}@{project_id}.iam.gserviceaccount.com
然后在“访问”->“IAM”下打开 gcloud 控制台。或使用以下链接:
https://console.cloud.google.com/access/iam?project={project_id} <- 将您的 Firebase 项目 ID 放在这里
在第 1 步中找到您的 Firebase 服务帐户。
按该帐户的编辑并添加“错误编写者”权限:
在哪里可以找到 serviceAccount.json:
关于 serviceAccount
- 这是一个通用凭证,可用于验证包括 Stackdriver 在内的许多谷歌服务。您可以使用以下网址从您的 firebase 仪表板获取您的(只需在使用前将您的 firebase project_id
放在链接中):
https://console.firebase.google.com/u/0/project/{project_id}/settings/serviceaccounts/adminsdk
打开它并单击“生成新凭据”。这将生成一个新的服务帐户并下载您需要确保安全的 serviceAccount.json
(除非您生成一个新帐户,否则您将无法再次获取它)。
答案 2 :(得分:0)
有功能请求:https://github.com/firebase/firebase-js-sdk/issues/710
好像根本不支持它,fabric也不支持web上的crashlytics,因此看起来好像有一些类似https://www.bugsnag.com的替代方案,但我也希望将它放在一个地方。根本看不到Web,Android或iOS客户端之间的差异,也不知道为什么不支持此功能。
但是对于Vue框架来说,一些可能的解决方案是捕获错误并将其发送到Google Analytics(分析),在这里您还可以连接Firebase移动应用程序。我想现在就这样尝试。我尚未对其进行测试,所以也不知道是否也必须捕获窗口错误。
Vue.config.errorHandler = function (error) {
//Toast.error(error.message)
console.warn(error.message)
//send error as event to google analytcs...
if (error) message = error.stack;
ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}
window.onerror = function(message, source, lineno, colno, error) {
// maybe we need to also catch errors here and send to GA
}
找到了类似的东西