65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Raygun 通知运行时错误

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015年4月13日

CPOL

6分钟阅读

viewsIcon

24839

Raygun 是一种运行时错误通知机制,易于集成到不同的语言和环境中。

问题所在

当涉及到软件中遗漏的运行时异常时,统计数据呈现出令人沮丧的景象。首先,它们可能代价高昂,给公司造成了无法估量的开发者时间浪费、诉讼和销售损失。其次,错误和异常损害品牌,导致试用转化率降低,并促使客户尝试其他供应商的竞争产品。

情况更糟

更令人沮丧的是,开发者通常对发布软件中发生的情况一无所知。一旦产品发货并投入生产,通常没有机制通知管理层和开发者错误正在发生。在多层场景中,后端服务器端开发者通常与前端 Web 开发者属于不同的团队,他们之间几乎没有连接点,这使得这个挑战更加复杂。归根结底,开发者确实希望修复运行时异常。遗憾的是,他们常常未能得知它们的发生。但不仅仅是开发者关心——首席技术官和项目经理也关心——等等。

微不足道但难以预测

运行时错误通常微不足道。JavaScript 开发者可能遇到过自动分号插入 (ASI) 错误,即如果开发者忘记添加分号,则会自动插入缺失的分号。通常,这是 JavaScript 的一个方便功能,但如果您忘记在返回数据的 return 语句末尾添加分号,它可能会反咬一口。其他微不足道的错误是由细微的浏览器差异引起的,例如 IE8 中不支持的 map() 函数,它不支持 ECMAScript 5。当然,其他运行时错误是由于意外的用户行为引起的,例如意外的空指针错误。我们只是触及了 JavaScript 的皮毛。想象一下您的应用程序由后端层、中间层、前端层(包括移动端)组成,跨越各种语言、编译器和运行时——跟踪运行时异常的挑战呈指数级增长。

灵丹妙药

这里需要的是一种用于运行时错误的通知机制,它易于插入不同的语言和环境。想象一下,这样一个系统可以与 iOS、Android、Java、C#、PHP、Python 和其他十几种编程语言一起工作,同时提供整个应用程序堆栈的单一综合视图,甚至跨多个应用程序。该产品已经上市,名为 Raygun (https://raygun.io/)。想象一下能够查看下面展示的一些架构——从上到下,跨越所有三层,跨越多种编程语言。

一些典型的架构

工作原理

如今,几乎所有项目都包含一定程度的 JavaScript,因此让我们向您展示一个关于这可能如何工作的快速示例。

该过程始于开发者在 https://raygun.io/ 门户上注册。注册完成后,开发者将获得一个 API 密钥。此 API 密钥应保存在安全的地方,因为它将直接在 JavaScript 代码中使用。此 API 密钥以及一些 JavaScript 代码将成为运行时异常直接路由到开发者的支持技术,通过电子邮件或短信。最终目标是第 9 步,开发者修复错误。

您首先进行如下简单包含

<script type="text/javascript" src="http://cdn.raygun.io/raygun4js/raygun.min.js">
  Raygun.init('yourApiKey').attach();
</script>

这不能再简单了。

在网页中使用 Raygun

证明 Raygun 的价值不应超过三分钟。让我们来看一个非常简单的端到端示例。您可以免费测试此产品,看看它是如何真正工作的。

有关更详细的说明列表,请访问此网页:https://raygun.io/docs/languages

注册应用程序

导航到 https://raygun.io/

单击“创建免费试用”按钮。

开始需要最少的信息,例如姓名和电子邮件地址。然后您可以单击“创建我的帐户”按钮。

下一个屏幕将要求您提供应用程序名称。请记住,此应用程序名称可以指跨多个层的系列不同应用程序。

现在我们准备选择语言,所以点击选择语言按钮。

从这里您可以看到支持数十种不同的语言和编程环境。但由于我们将演示 JavaScript,请点击下面的 JAVASCRIPT。

有多种方法可以包含 Raygun JavaScript 代码。也许最简单的方法是来自他们的 CDN。将下面的脚本标签复制并粘贴到安全的地方。

请注意下面的附加脚本标签。它包含您的 API 密钥。此 API 密钥很重要,因为一旦发生运行时异常,它是通向注册开发者电子邮件帐户的桥梁。也将此片段复制到安全的地方。

使用 Visual Studio 创建新的 Web 项目

现在让我们使用 Visual Studio 创建一个简单的项目。几乎任何版本的 Visual Studio 都可以。从“文件”菜单中选择“新建网站”。

支持所有各种网站项目,但我们将从简单的空 ASP.NET 网站开始。

现在我们将添加一个带有一些 JavaScript 的网页。因此,在项目名称和解决方案资源管理器上右键单击,然后单击“添加”,然后单击“添加新项”。

请注意,我们正在添加一个名为 BuggyApp 的 HTML 页面。

BuggyApp.html

键入或复制下面的代码片段。此代码片段缺少 Raygun 代码,因此开发者永远不会收到异常通知。

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
    try {
        adddlert("Welcome guest!");
    } catch (err) {
        document.getElementById("demo").innerHTML = err.message;
    }
</script>

</body>
</html>

添加 Raygun 代码

理想情况是下面的代码。请注意,我们现在正在链接 Raygun 代码,以使电子邮件消息能够发送到注册开发者的 API 密钥。异常也出现在 Raygun 仪表板上并被智能分组,因此您不会被通知消息淹没。

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>
<script type="text/javascript" src="http://cdn.raygun.io/raygun4js/raygun.min.js"></script>in all will
<script>
    <!-- Linking in the API key -->
    Raygun.init("ClqOPaPEAVKqi9D1L5oHPw==").attach();

    try {
        adddlert(" welcome guest!");
    } catch (err) {
        document.getelementbyid("demo").innerhtml = err.message;
    }
</script>

</body>
</html>

这是客户会收到的错误消息。但是开发者呢?毕竟,这里的重点是开发者会收到通知。

开发者在几秒钟内收到通知

开发者将收到如下所示的电子邮件通知。开发者可以直接在电子邮件中点击以获取有关此错误的更多详细信息。电子邮件设置也可以在 Raygun 应用程序中自定义。

向用户提供了大量有用的信息。有关更多详细信息,请参阅 Raygun 文档。

发生时间 2015 年 4 月 6 日,上午 12:32:16 - 3 分钟前
版本 未提供
Message 对象不支持属性或方法 'getelementbyid'
类名 类型错误
堆栈跟踪 在这种情况下没有堆栈,因为此错误没有发生在方法内部

可以从 Raygun 门户获取大量其他信息。例如,Raygun 可以告诉您最高重复出现的问题,同时不会让您被大量的消息和通知淹没。通过电子邮件进行的通知可以是个人级别的,也可以是每日错误摘要。此外,Raygun 毫不费力地与 Slack、HipChat 以及您最喜欢的更多开发者工作流工具集成。正如前面所评论的,其中一个很棒的功能是能够同时支持多个平台,从一个帐户监控它们,提供整个应用程序堆栈的统一视图。

结论

这个简短的教程强调了 Raygun 的价值。只需几段代码,公司就可以保护其品牌,保持高试用转化率,避免诉讼等等。Raygun 之所以特别引人注目,是因为一个 Raygun 包可以提供跨越多个层次的整个应用程序堆栈中运行时异常的可见性。Raygun 的免费试用版可在 https://raygun.io 上获取。

© . All rights reserved.