我正在用Appscript编写Gmail插件。如果应用程序抛出未处理的错误,它将自动登录到stackdriver并显示在Stackdriver Error Reporting中。但是,我想手动将错误发送到Stackdriver Error Reporting:
try{
thisMayThrowAnError();
catch(err){
console.error(new Error("Something Failed"))
}
在上面的示例中,错误日志显示在Stackdriver Logs中,但不会出现在Stackdriver Error Reporting中。有没有一种方法可以实现而无需实际抛出(并使加载项崩溃)?
答案 0 :(得分:2)
如果我的理解是正确的,该解决方法如何?在这种解决方法中,它使用Stackdriver Error Reporting API中的projects.events.report
方法。
在使用此示例脚本之前,请执行以下操作。
https://www.googleapis.com/auth/cloud-platform
添加到范围。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
的每个值都是样本值。因此,请根据您的情况进行修改。根据您的问题,我了解到您正在使用Google Apps脚本。如果您使用其他语言,请告诉我。如果不是您想要的解决方法,我对此表示歉意。