【问题标题】:Use Sentry's Raven JS to collect all HTTP errors使用 Sentry 的 Raven JS 收集所有 HTTP 错误
【发布时间】:2016-06-13 20:37:45
【问题描述】:

我已经设置了一个 Sentry 应用程序来收集客户端可能发生的 HTTP / JS 错误。但是,似乎当我尝试发出大约 400 个 HTTP 请求时,Sentry 未能相应地捕获请求。

这是 Sentry 的默认行为,还是我的代码中缺少某些内容(如下)?

<!DOCTYPE html>
<html>
    <head>
            <title>Hi there</title>
            <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
            <script src="https://cdn.ravenjs.com/2.1.1/raven.min.js"></script>
            <script>Raven.config('http://xxx@xxx.xxxxx.com/4').install();</script>
    </head>
    <body>
        Hello the world :-)
        <script type="text/javascript">
            $.get("http://somehttp400url.com/");
        </script>
    </body>
</html>

感谢您的反馈

【问题讨论】:

标签: javascript logging sentry raven


【解决方案1】:

我发现这最适合将所有可用信息组合到附加数据字段中:

$(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) {
  var new_obj= Object.assign({},jqXHR, ajaxSettings);
  Raven.captureMessage(thrownError || jqXHR.statusText, {
        extra: new_obj
  });
});

【讨论】:

    【解决方案2】:

    Sentry docs on function wrapping 将是这方面最规范的来源,但有效地告诉你按照 Bob 所说的去做。 :)

    【讨论】:

      【解决方案3】:

      您可以使用ajaxError 处理程序(https://api.jquery.com/ajaxError/):

      $( document ).ajaxError(function( event, request, settings ) {
        Raven.captureException(new Error(JSON.stringify(request)));
      });
      

      【讨论】:

      • 太棒了!有用。谢谢。顺便说一句,如果我们有一个脚本或样式标签指向一个无效文件(将返回 404),是否也可以被 Sentry 收集?
      • 不,实际上没有办法自动获取该信息。您可以尝试这样做: 跨度>
      • @HoangHUA 有比显式检查每个库更好的方法。您可以使用 onerror:&lt;link href="some.bad.url.com/" onerror="trackFailure('failed to get X')" rel="stylesheet" type="text/css"&gt; 和:function trackFailure(msg) { Raven.captureException(msg) }
      猜你喜欢
      • 2014-02-28
      • 2012-05-30
      • 1970-01-01
      • 2017-03-13
      • 2013-10-04
      • 2019-07-16
      • 1970-01-01
      • 2014-11-13
      • 2015-05-12
      相关资源
      最近更新 更多