使用 gcloud 报告 Stackdriver 错误

Rob*_*dan 5 google-cloud-platform gcloud stackdriver google-cloud-stackdriver google-cloud-error-reporting

我正在重新使用 gcloud cli 将事件发送到 StackDriver 错误报告。
(非常有限的)文档在这里:https : //cloud.google.com/sdk/gcloud/reference/beta/error-reporting/events/report

无论我作为消息发送什么,我似乎都会收到此错误:

错误:(gcloud.beta.error-reporting.events.report) INVALID_ARGUMENT:ReportedErrorEvent.context 必须包含一个位置,除非message包含异常或堆栈跟踪。

我尝试将消息格式化为错误报告的 JSON 表示:https : //cloud.google.com/error-reporting/docs/formatting-error-messages 但消息似乎相同。这是一个示例命令和 JSON:

gcloud beta error-reporting events report --service foo --message-file err.json

{
    "serviceContext": {
        "service": "foo"
    },
    "message": "Whoops!",
    "context": {
        "reportLocation": {
            "filePath": "/usr/local/bin/test",
            "lineNumber": 123,
            "functionName": "main"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*sey 1

gcloud --message 或 --message-field 参数只是message报告错误的字段,而不是整个 JSON。由于您无法提供reportLocationvia gcloud,message因此必须是堆栈跟踪或异常。

使用API 浏览器处理原始请求是有效的。记录错误也会通过以下方式进入错误报告:

gcloud beta logging write --payload-type=json test-errors-log '
{
    "serviceContext": {
        "service": "foo"
    },                        
    "message": "Whoops!",
    "context": {
        "reportLocation": {
            "filePath": "/usr/local/bin/test",
            "lineNumber": 123,
            "functionName": "main"
        }
    }
}'
Run Code Online (Sandbox Code Playgroud)