1

时当试图调用Stackdriver Error Reporting API(经由Client-Side JavaScript libraryvia the API explorer或),收到以下错误:INVALID_ARGUMENT(400错误)调用为Stackdriver错误报告API

请求:

{ "message" : "test" } 

响应:

{ 
    "error": { 
    "code": 400, 
    "message": "Request contains an invalid argument.", 
    "status": "INVALID_ARGUMENT" 
    } 
} 

Stackdriver错误报告API已启用,并且我拥有App Engine项目的所有者权利。

API是否不起作用?如果我做错了什么,有人可以帮忙吗?

回答

1

报告事件的文档说明ServiceContext is required

如果您只发送消息(不是堆栈跟踪/例外),则还需要包含context with a reportLocation。这在message字段的文档中有详细说明,但并不明显。

从API浏览器中的以下工作:

{ 
"context": { 
    "reportLocation": { 
    "functionName": "My Function" 
    } 
}, 
"message": "error message", 
"serviceContext": { 
    "service": "My Microservice", 
} 
} 

你可能有兴趣在How Error are Grouped的文档了。

FWIW,我在这个产品上工作,我认为错误信息太泛化了。问题是(?)服务堆栈会清理邮件,除非它们被标注为公共消费。我会追逐的。

+0

接收到请求后,API应该验证是否存在所有必需的参数。如果它们不存在,那么API应该抛出一个特定参数丢失的例外。 – Lee

+1

请注意,[JS实现没有指定reportLocation](https://github.com/GoogleCloudPlatform/stackdriver-errors-js/blob/master/dist/stackdriver-errors-concat.js#L81)。它是在测试JS包装,我第一次遇到400错误,这似乎是这样的原因。 – Lee

+0

谢谢你指出。请记住,该模块被标记为“实验” –