Apps 脚本处理未在堆栈驱动程序错误中显示的错误
Appscript handled errors not shown in stackdriver errors
我正在使用 Appscript 编写 Gmail 插件。如果应用程序抛出未处理的错误,它将自动记录在 Stackdriver 上并显示在 Stackdriver 错误报告中。但是,我想手动将错误发送到 Stackdriver 错误报告:
try{
thisMayThrowAnError();
catch(err){
console.error(new Error("Something Failed"))
}
在上面的示例中,错误日志显示在 Stackdriver 日志中,但不会出现在 Stackdriver 错误报告中。有没有办法在不实际抛出它(并使插件崩溃)的情况下实现这一目标?
- 您想手动向 StackDriver 错误报告报告自定义错误。
- 您不想停止脚本。
如果我的理解是正确的,这个解决方法怎么样?在此解决方法中,它使用 Stackdriver 错误报告 API.
中 projects.events.report
的方法
在使用此示例脚本之前,请执行以下操作。
- 使用清单和其他方式将
https://www.googleapis.com/auth/cloud-platform
添加到范围。
- 在 API 控制台启用 Stackdriver 错误报告 API。
示例脚本:
try {
thisMayThrowAnError();
} catch(err) {
var projectId = "project-id-#####"; // Please set the project ID of project including your script.
var payload = { // Please modify this for your situation.
message: "Something Failed",
serviceContext: {service: "sample"},
context: {reportLocation: {functionName: "sampleFunctionName"}},
};
var url = "https://clouderrorreporting.googleapis.com/v1beta1/projects/" + projectId + "/events:report";
var params = {
method: "post",
payload: JSON.stringify(payload),
contentType: "application/json",
headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
}
UrlFetchApp.fetch(url, params);
}
注:
- 这是一个简单的示例脚本。所以请根据你的情况修改。
- 在这个脚本中,
payload
的每个值都是样本值。所以请根据你的情况修改。
- 当我调用这个API时,出现了result反映迟的情况。因此,如果调用 API 后结果未反映到 StackDriver Error Reporting,请稍等。
参考文献:
- Stackdriver Error Reporting API
- projects.events.report
- ErrorContext
- ServiceContext
- Identifying projects
根据您的问题,我了解到您使用的是 Google Apps 脚本。如果您使用其他语言,请告诉我。如果此解决方法不是您想要的结果,我深表歉意。
我正在使用 Appscript 编写 Gmail 插件。如果应用程序抛出未处理的错误,它将自动记录在 Stackdriver 上并显示在 Stackdriver 错误报告中。但是,我想手动将错误发送到 Stackdriver 错误报告:
try{
thisMayThrowAnError();
catch(err){
console.error(new Error("Something Failed"))
}
在上面的示例中,错误日志显示在 Stackdriver 日志中,但不会出现在 Stackdriver 错误报告中。有没有办法在不实际抛出它(并使插件崩溃)的情况下实现这一目标?
- 您想手动向 StackDriver 错误报告报告自定义错误。
- 您不想停止脚本。
如果我的理解是正确的,这个解决方法怎么样?在此解决方法中,它使用 Stackdriver 错误报告 API.
中projects.events.report
的方法
在使用此示例脚本之前,请执行以下操作。
- 使用清单和其他方式将
https://www.googleapis.com/auth/cloud-platform
添加到范围。 - 在 API 控制台启用 Stackdriver 错误报告 API。
示例脚本:
try {
thisMayThrowAnError();
} catch(err) {
var projectId = "project-id-#####"; // Please set the project ID of project including your script.
var payload = { // Please modify this for your situation.
message: "Something Failed",
serviceContext: {service: "sample"},
context: {reportLocation: {functionName: "sampleFunctionName"}},
};
var url = "https://clouderrorreporting.googleapis.com/v1beta1/projects/" + projectId + "/events:report";
var params = {
method: "post",
payload: JSON.stringify(payload),
contentType: "application/json",
headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
}
UrlFetchApp.fetch(url, params);
}
注:
- 这是一个简单的示例脚本。所以请根据你的情况修改。
- 在这个脚本中,
payload
的每个值都是样本值。所以请根据你的情况修改。 - 当我调用这个API时,出现了result反映迟的情况。因此,如果调用 API 后结果未反映到 StackDriver Error Reporting,请稍等。
参考文献:
- Stackdriver Error Reporting API
- projects.events.report
- ErrorContext
- ServiceContext
- Identifying projects
根据您的问题,我了解到您使用的是 Google Apps 脚本。如果您使用其他语言,请告诉我。如果此解决方法不是您想要的结果,我深表歉意。