1.8.1 • Published 3 years ago

@doctorwork/wx-report-sdk v1.8.1

Weekly downloads
1
License
ISC
Repository
-
Last release
3 years ago

wx-report-sdk

使用方法:

微信小程序 app.js头部引入sdk

const wxReportSdk = require('@doctorwork/wx-report-sdk');

const monitor = wxReportSdk({
    appId: "xxx",
    env: "dev",
    filterUrls: ['api/xxxx/xx'],
    errcodeReport(res) {
      if (Object.prototype.toString.call(res) === '[object Object]' && res.hasOwnProperty('errcode') && res.errcode !== 0) {
        return { isReport: true, errMsg: res.errmsg,code: res.errcode };
      }
      return { isReport: false };
    }
})

参数说明

初始化参数类型是否必填默认用例描述
appIdString必填-小程序的appId
envString可选prod | production , qa , dev , pre控制domain地址:prod和production都为线上,不同环境内部会走不同接口
domainString可选默认线上环境地址https://api-dev.doctorwork.com/web-monitor/api/v1/wx/report/wx定义上报api地址,优先级高于env (推荐使用env)
filterUrlsArray可选'api/xx'可以过滤部分接口不对其做上报,比如一些轮训,字符串模糊匹配(尽量保证路径完整,模糊匹配可能会影响到其他接口)
errcodeReport(业务接口异常上报)Function可选例子见下方请求接口,httpstatus为200,业务接口异常通过消息体返回的错误。比如errcode为1代表后端代码异常,此时我们需要上传异常给监控

sdk默认会过滤的接口域名

  • 'hm.baidu.com' //百度统计
  • 'ssdata.xrxr.xyz' //神策
  • 'sentry.aihaisi.com/' //sentry

三方统计的请求会造成大量垃圾数据,目前监控不会收集此类接口的数据,如果业务需要过滤部分不需要监控的接口,使用 filterUrls 。

errcodeReport:

  wxReportSdk({
    errcodeReport(res) {
      if (Object.prototype.toString.call(res) === '[object Object]' && res.hasOwnProperty('errcode') && res.errcode !== 0) {
        return { isReport: true, errMsg: res.errmsg,code: res.errcode };
      }
      return { isReport: false };
    }
  });
注意正向和反向判断

我们可能通过fetch或者xmlHttpRequest去请求任何资源比如接口、css、js(也可能是框架发送的请求),errcodeReport接收的res响应数据,可能是字符串或者对象等多种类型,我们可能需要更加严格的判断来正确的判断是否需要上报业务错误, 比如

正向判断res.errcode===1
errcodeReport(res) {
  if (Object.prototype.toString.call(res) === '[object Object]' && res.errcode == 1) {
    return { isReport: true, errMsg: res.errmsg,code: res.errcode };
  }
  return { isReport: false };
}
反向判断res.errcode!==0,如果不使用hasOwnProperty,那不存在errcode属性的接口响应也会被当作错误上报(我们的业务接口有些并不一定是完全规范的)
errcodeReport(res) {
  if (Object.prototype.toString.call(res) === '[object Object]' && res.hasOwnProperty('errcode') && res.errcode !== 0) {
    return { isReport: true, errMsg: res.errmsg,code: res.errcode };
  }
  return { isReport: false };
}

方法

addError:手动上报错误信息

let message = 'js add error';
let col = 20;
let line = 20;
let resourceUrl = 'http://www.xxx.com/01.js';

monitor.addError({
  msg: message,
  col: col,
  line: line,
  resourceUrl: resourceUrl
});

addCustom: 自定义埋点

const monitor = wxReportSdk({
    appId: "xxx",
    env: 'dev'
})
//默认立刻执行,如果不需要立刻执行,可以设置reportNow为false,埋点会进队列而后其他地方执行report或者页面切换或者其他接口请求,上报的时候会带上customs队列。
//reportNow默认true,可选参数
monitor.addCustom({
    customName: 'mgStart-getUserInfo',
    customContent: {
      userId: 123,
      system: {
        version: '1.2'
      }
    },
    /*
      非必填字段,自定义筛选条件,必须为对象,否则无效,手动选择部分字段上传。
      监控后台通过增删改filter字段,来筛选自定义的参数。也就是说当前customContent里的内容如果需要后期查询做筛选,需要把字段传入
      注意:customFilter只支持1层对象
    */
    customFilter: {
      userId: 123,
      version: '1.2'
    }
}, reportNow);

主要上报以下性能信息

  • errs 错误信息,包含 js 错误和 ajax 错误信息
  • markuser 用户标识,可用于做 uv 统计
  • net 用户的网络类型 参考小程序的 wx.getNetworkType 方法
  • system 用户系统信息 参考小程序的 wx.getSystemInfo 方法
  • loc 用户地理位置信息 参考小程序的 wx.getLocation 方法
  • pages 用户当前浏览器的 path 路径 和参数详情
  • ajaxs 当前 path 路径下 ajax 详细信息
  • time 上报时间
  • customs 自定义埋点
1.8.2-alpha.0

3 years ago

1.8.1

3 years ago

1.8.0

3 years ago

1.8.0-alpha.0

3 years ago

1.7.3

3 years ago

1.7.2

3 years ago

1.7.1

3 years ago

1.7.0

3 years ago

1.7.0-alpha.0

3 years ago

1.6.0

3 years ago

1.5.5

3 years ago

1.5.4

3 years ago

1.5.2-alpha.0

3 years ago

1.5.1-alpha.0

3 years ago

1.5.0-alpha.2

3 years ago

1.5.0-alpha.1

3 years ago

1.5.0-alpha.0

3 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

0.0.9

4 years ago

1.0.0

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

5 years ago