美文网首页我爱编程
前端错误日志采集上报

前端错误日志采集上报

作者: codinger | 来源:发表于2018-06-21 21:15 被阅读200次

js-log-report

前端错误日志采集上报、上报给后端分析错误日、主要用于移动端各手机类型错误日志的收集分析

GitHub:
js-log-report

业务背景

在开发Vue移动端项目,运营同学反馈了一个客户手机上页面白屏的问题、此时说第一句话是,在我的手机上是正产的啊,可是问题就是存在,生产环境啊,需要怎么处理呢? 'vconsole'也只能在外测上使用、在生产上找问题,而且不知道是在什么手机上才会有这个问题、如何重现bug 是面临的第一个问题。

为何要做错误日志追踪上报

前端JS代码错误,浏览器都都会在控制台输出错误信息,以及出错的文件,行号,堆栈信息,这些错误很容易导致页面代码不执行,并且考虑到手机类型五花八门,浏览器内核以及版本的差异性,前端代码机型兼容性问题,并不能将所有的手机都拿来适配,前端错误日志上报是一个较好的解决方案

日志上报哪些数据

1.通过 wiindow.onerror 可以获取 msg, url, line, col, error等错误信息,JS 的错误行号、url错误地址,
2.通过 window.navigator.userAgent 获取 设备浏览器的信息集合
如:

User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
  1. os_version 系统版本号
  2. browser 浏览器类型 Opera FF Chrome Safari IE
 var defaults = {
    ua: window.navigator.userAgent,
    browser: '',
    os: '',
    osVersion: '',
    errUrl: window.location.href,
    msg: '', // 错误的具体信息
    url: '', // 错误所在的url
    line: '', // 错误所在的行
    col: '', // 错误所在的列
    error: '' // 具体的error对象
  }

具体上报字段可查看表结构

如何实现错误上报

1.实现错误日志收集 收集onerror 错误参数,以及自定义的参数
2.核心window.onerror,重写该方法、在此中捕获异常错误信息、并且将错误信息发送至服务器接口
大致代码如下

window.onerror = function (msg, url, line, col, error) {
  ajax({
    url: 'xxx/api/sendError', // 请求地址
    type: 'POST', // 请求方式
    data: data, // 请求参数
    dataType: 'json',
    success: function (response, xml) {
      // success
    },
    fail: function (status) {
      // error
    }
  })
}

如何使用

使用如index.html所示,导入以下代码在页面head中,并且优先于其他JS文件加载

<script type="text/javascript" src="./error.js"></script>
    <script type="text/javascript">
      var data = {
      productname: 'test' //产品名称
      extend:'' //扩展字段,允许是JSON 字符串的形式保存
      }
      errLogReport({
      data: data,
      url: 'http://localhost:8080/api/sendError'
      })
    </script>

数据上报表结构

DROP TABLE IF EXISTS `j_log`;
CREATE TABLE `j_log` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id号',
  `os_version` char(10) DEFAULT NULL COMMENT '系统版本号',
  `msg` varchar(255) DEFAULT NULL COMMENT '错误信息',
  `error_url` varchar(255) DEFAULT NULL COMMENT '错误所在的url',
  `line` int(10) DEFAULT NULL COMMENT '错误所在的行',
  `col` int(10) DEFAULT NULL COMMENT '错误所在的列',
  `error` varchar(255) DEFAULT NULL COMMENT '具体的error对象',
  `url` varchar(255) DEFAULT NULL,
  `browser` varchar(255) DEFAULT NULL COMMENT '浏览器类型',
  `product_name` char(255) CHARACTER SET utf8 DEFAULT '' COMMENT '产品名称',
  `error_time` char(20) DEFAULT NULL COMMENT '时间戳',
  `os` char(10) DEFAULT NULL COMMENT '系统类型',
  `extend` varchar(255) DEFAULT NULL COMMENT '业务扩展字段、保存JSON字符串',
  `ua` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=55 DEFAULT CHARSET=utf8;

缺点

对于压缩的代码,报错信息没法定位到具体是什么地方报错了,这里没有去详细研究,阮一峰老师有篇相关文章
JavaScript Source Map 详解,有时间再去研究一下

源代码

js-log-report

原文地址:
https://code.it919.cn/2018/06/web-js-log-report/

相关文章

  • 前端错误日志采集上报

    js-log-report 前端错误日志采集上报、上报给后端分析错误日、主要用于移动端各手机类型错误日志的收集分析...

  • 前端监控原理

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

  • kubernetes中日志方案

    1.日志方案的关注点 日志来源和存放位置 日志采集和上报 日志存储 日志分析 日志查询 2.kubernetes中...

  • 数据埋点之四:埋点事件触发类型

    前端触发上报用户在前端进行相应的操作时,即触发采集数据事件。 前端获取后端结果上报这种方式,一般同由于除了记录用户...

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

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

  • 使用Object.definedproperty实现一个前端日志

    一、功能点 日志回调 环境区分 错误捕获及上报 日志信息获取及手动上报功能 二、功能点详解 1、日志回调 在用户对...

  • 字段修改产生的异常

    由于我们的项目的日志采集系统应用的是logback-spring 日志采集所以很多错误由于日志级别的更改打印出来的...

  • 前端错误监控与上报

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

  • 前端性能监控错误上报

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

  • day12-前端面试技巧-( 错误监控)

    前端错误的分类: 错误的捕获方式: 上报错误的基本原理: xx相关资料:https://www.cnblogs.c...

网友评论

    本文标题:前端错误日志采集上报

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