前端错误监控与数据上报

作者: _茂 | 来源:发表于2019-04-13 21:54 被阅读26次

一、简介

前端需要做错误监控,将runtime异常发送到某处;或者监控web以及APP的某个组件、某个页面,以便可以可视化地整理分析,更好地完成版本迭代。

二、错误监控

如果说性能是属于优化的内容,那错误就是最紧急的任务,特别是会带来APP闪退或者阻塞用户操作流程的隐患的错误。

1.onerror事件

简单地,我们可以通过监听window或者特定的element的onerror事件,处理错误:
window和element上的error事件

2.try-catch

早在1999年的JavaScript 1.4 ECMAScript 3rd Edition (ECMA-262)就实现了try-catch
语法如下:

try {
  // 尝试搞些事情
}
[catch (exception_var_1 if condition_1) { // 注意,这里的if condition_1, 不是标准用法
   // 发生exception_var_1 错误时,代码会执行到这里
}]
...
[catch (exception_var_2) {
   // 发生exception_var_2 错误时,代码会执行到这里
}]
[finally {
   // 无论如何,代码都会走到这里,除非程序直接崩溃退出
}]

try语句包含了由一个或者多个语句组成的try块, 和至少一个catch子句或者一个finally子句的其中一个,或者两个兼有。

MDN中try-catch介绍

3.unhandledrejection

开发中,我们有时会遇到unhandled reject promise 错误,原因是没有处理Promise的reject(resolve一般都会处理,因为是正常正确业务逻辑)。可以通过以下方式统一处理。(注意:此方法有兼容问题,只有Chrome的49以上版本兼容)

window.addEventListener("unhandledrejection", function (event) {
  console.warn("WARNING: Unhandled promise rejection. Shame on you! Reason: "
               + event.reason);
});

MDN中unhandledrejection的介绍

4.利用第三方工具

sentry是一个方便易用的工具,它可以让你几乎实时地收到由线上抛出的错误,在sentry的管理后台,可以清晰地看到发生的时间、次数。还可以为某个错误事件标记状态(已解决、指定修复版本 等等)。你还可以建立一个钩子,把sentry和slack连接在一起,在你工作时,错误会自动发到slack上。当然,你还可以自定义错误发生时,向外发送什么payload,以便调试时可以看到当时的api-call的信息

sentry支持多种语言以及平台,具体见 sentry-github

三、性能上报

通过Performance​.mark()在浏览器具有指定名称的性能加载缓冲区中添加一个记录,方便在后面需要时计算时间性能。

// 以一个标志开始。
performance.mark("test-开始");

// 等待一些时间。
setTimeout(function() {
  // 标志时间的结束。
  performance.mark("test-结束");

  // 测量两个不同的标志。
  performance.measure(
    "test",
    "test-开始",
    "test-结束"
  );

  // 获取所有的测量输出。
  // 在这个例子中只有一个。
  var measures = performance.getEntriesByName("test");
  var measure = measures[0];
  console.log("毫秒数:", measure.duration)

  // 清除存储的标志位(防止内存泄漏)
  performance.clearMarks();
  performance.clearMeasures();
}, 1000);

具体见:
MDN中Performance的介绍

四、统计上报

1.google统计

google出的统计分析工具,具体见:
https://developers.google.com/analytics/(某些地区可能无法阅读)

2.百度统计

可以对网站、移动应用进行统计
百度统计-产品概述
移动统计支持零代码接入SDK

(完)

相关文章

  • 前端错误监控与数据上报

    一、简介 前端需要做错误监控,将runtime异常发送到某处;或者监控web以及APP的某个组件、某个页面,以便可...

  • 前端监控原理

    前端监控分为性能监控和错误监控。其中监控又分为两个环节:数据采集和数据上报。本文主要讲的就是如何进行数据采集和数据...

  • 前端错误监控与上报

    错误类型 我们一般比较关心以下三种类型的错误 js执行错误 资源加载错误 http请求错误 全局捕获错误 wind...

  • 奇技淫巧-获取JS所有error对象中的行、列

    背景 最近在做前端监控,其中对JS错误需要上报:错误消息、错误文件、行、列、错误栈。需要通过上报的错误文件、行、列...

  • 前端性能监控错误上报

    这周学习了一波前端性能分析和前端报错上传,当一个项目完成时,UI炫酷功能强大,却卡在性能瓶颈,势必会令项目黯然失色...

  • 前端异常监控

    前端异常监控作用: 错误上报 流程跟踪 用户行为跟踪 开源: https://github.com/betterjs

  • 前端监控体系建设

    前端监控体系主要分为错误监控、性能监控、业务监控及安全监控三个方面。 一、错误监控 (一)监控范围 js语法错误、...

  • 如何确定数据埋点的准确性

    一、常见的数据上报类型 从事件上报的触发逻辑层面上看,数据上报类型可分为:前端触发上报、前端获取后端结果...

  • Fundebug前端JavaScript插件更新至1.2.0

    摘要: Fundebug的前端JavaScript错误监控插件更新至1.2.0:支持监控WebSocket连接错误...

  • 前端异常监控

    为什么要做前端异常监控 有些问题只存在于线上特定的环境 后端错误有监控,前端错误没有监控 基本实现 参考我们nod...

网友评论

    本文标题:前端错误监控与数据上报

    本文链接:https://www.haomeiwen.com/subject/jxarwqtx.html