首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用gcloud报告堆栈驱动程序错误

用gcloud报告堆栈驱动程序错误
EN

Stack Overflow用户
提问于 2017-09-19 02:26:43
回答 3查看 1.6K关注 0票数 6

我正在重试使用gcloud cli将事件发送到StackDriver错误报告。

(非常有限的)文档在这里:https://cloud.google.com/sdk/gcloud/reference/beta/error-reporting/events/report

不管我作为一条消息发送了什么,我似乎都收到了以下错误:

INVALID_ARGUMENT: ReportedErrorEvent.context必须包含一个位置,除非message包含异常或堆栈跟踪。

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

代码语言:javascript
复制
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"
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-22 14:30:34

gcloud -message或-message- field参数只是报告错误的message字段,而不是整个JSON。由于不能通过gcloud提供reportLocation,所以message必须是堆栈跟踪或异常。

在原始请求中使用API浏览器是可行的。记录错误还可以通过以下方法进行错误报告:

代码语言:javascript
复制
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"
        }
    }
}'
票数 1
EN

Stack Overflow用户

发布于 2019-12-17 12:50:48

还有另一种方式。

代码语言:javascript
复制
gcloud logging write --payload-type=json test-errors-log '
{
  "serviceContext": {"service": "foo"},                        
  "message": "message with stacktrace\n at /test.js"
}
'
代码语言:javascript
复制
gcloud logging write --payload-type=json test-errors-log '
{
  "@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent",
  "message": "message without stacktrace"
}
'
代码语言:javascript
复制
gcloud beta error-reporting events report --service foo --message 'message with stacktrace
at /test.js'
票数 2
EN

Stack Overflow用户

发布于 2017-09-19 04:34:53

尝试在上下文中添加httpRequest详细信息。

您可以在文档中找到json有效负载的详细信息。json中的父对象是ErrorEvent

您可以从那里开始并找到它的子元素ServiceContextErrorContext的链接。

虽然我没有尝试命令行选项,但我调试了我们在应用程序中使用的堆栈驱动程序日志类,以找出我们正在发送的json有效负载,下面是从我们的应用程序中触发的示例json。

代码语言:javascript
复制
{
  "context": {
    "httpRequest": {
      "responseStatusCode": 500,
      "method": "GET",
      "url": "http://localhost:16500/product"
    },
    "user": "2247177"
  },
  "message": "org.springframework.web.client.HttpServerErrorException:  500 Server Error
  at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java: 94)
  ",
  "serviceContext": {
    "service": "cart",
    "version": ""
  }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46290881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档