I'm retying to use the gcloud cli to send events to StackDriver Error Reporting.
The (very limited) documentation is here: https://cloud.google.com/sdk/gcloud/reference/beta/error-reporting/events/report
Regardless of what I send as a message I seem to get this error:
ERROR: (gcloud.beta.error-reporting.events.report) INVALID_ARGUMENT: ReportedErrorEvent.context must contain a location unless
message
contain an exception or stacktrace.
I have tried formatting the message as a JSON representation of an error report: https://cloud.google.com/error-reporting/docs/formatting-error-messages but the message seems to be the same. Here's an example command and 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"
}
}
}
The gcloud --message or --message-field argument is just the message
field of the reported error, not the entire JSON. Since you can't provide the reportLocation
via gcloud, message
has to be a stack trace or exception.
Using the API explorer with the original request works. Logging the error also makes its way into Error Reporting via:
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"
}
}
}'