【问题标题】:Google Stackdriver Error Reporting API - Include Custom DataGoogle Stackdriver 错误报告 API - 包含自定义数据
【发布时间】:2018-07-06 20:35:34
【问题描述】:

我需要包含一个带有错误报告的自定义数据对象/JSON 字符串,而不会丢失 Stackdriver 似乎捕获的堆栈跟踪。将 JSON 字符串设置为 message 似乎不是一个理想的解决方案。

我在网上看到了对 jsonPayload 密钥的引用,但在报告中没有成功设置它。

在我将 Stackdriver 集成到的 Node.js 系统中(通过日志记录客户端),我有一个记录器函数,它接受有关环境、错误堆栈和任何导致错误的支持数据的附加数据,我希望将此包含在报告中,以便快速调查。

我不得不在过渡期间使用 Google Stackdriver Logging API 来处理这个问题,但我发现指标查看器有点复杂,而且也很难跟踪哪些日志已被处理。

我之前看到过stale question,但不想劫持它。它也没有任何解决方案。

希望有解决办法!

【问题讨论】:

    标签: node.js google-cloud-platform stackdriver google-cloud-error-reporting


    【解决方案1】:

    我所做的是将自定义有效负载存储到 Datastore,并将指向 Datastore 查看器的链接放入错误异常消息中。例如,它在 Ruby 中的外观(该方法将我需要调试的 urlhtml 字符串存储为类型为 exception_details 的 Datastore 实体的属性):

    def report_error url, html
      begin
        raise "https://console.cloud.google.com/datastore/entities/query/gql?gql=#{
                CGI.escape "SELECT * FROM exception_details WHERE __key__=Key(exception_details, #{
                  Datastore.save( Datastore.entity("exception_details") do |error|
                    error["url"] = url
                    error["html"] = html
                    error.exclude_from_indexes! "html", true
                  end ).first.key.id
                })"
              }"
      rescue => e
        Google::Cloud::ErrorReporting.report e
      end
    end
    

    这是我收到的一封电子邮件:

    我没有点击蓝色按钮,而是访问了超链接,现在我可以在其中检查我存储的 html 变量:

    【讨论】:

    • 感谢您如此详细的回复。看起来是一个非常好的解决方法。我会在我的开发分支上试试。现在我已经切换到使用 Sentry,因为它可以快速简单地设置上下文
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2018-02-27
    • 2017-09-13
    相关资源
    最近更新 更多