前端性能监控为您提供多种实例方法用于上报数据,您可以通过实例方法修改实例配置、自定义上报事件、自定义上报测试资源等。
目前 RUM 提供的 Aegis 实例方法如下:
参数 | 用途 |
setConfig | 传入配置对象,包括用户 ID 和 UIN 等信息 |
info | 主要上报字段,用于指定用户上报白名单日志。 下列两种情况日志才会报到后台: 1. 打开页面的用户在名单中。 2. 对应的页面发生了错误。 |
infoAll | 主要上报字段,用于所有用户上报白名单日志。 |
error | 主要上报字段,用于上报错误信息。 |
report | 用来上报任意类型的日志信息。 |
reportEvent | 上报自定义事件。 |
reportTime | 上报自定义测速资源。 |
time | 上报自定义测速资源,与 timeEnd 共同使用。适用于两个时间点之间时长的计算并上报。 |
timeEnd | 上报自定义测速资源,与 time 共同使用。适用于两个时间点之间时长的计算并上报。 |
destroy | 销毁 aegis 实例。 |
前提条件
实例方法
setConfig
该方法用于修改实例配置,使用场景如下:
1. 可获取到用户 UIN ,可同时传入配置用户 ID 和 UIN 两个实例对象,进行实例化:
const aegis = new Aegis({id: 'pGUVFTCZyewxxxxx',uin: '777'})
2. 通常情况下,我们并不能一开始就获取到用户的
uin
。若在获取 UIN 的这段时间不进行实例化,这期间发生的错误前端性能监控将无法监听。针对这种情况,我们可以先传入 ID 进行实例化,引用 setConfig 传入 UIN ,示例如下:const aegis = new Aegis({id: 'pGUVFTCZyewxxxxx'});// 拿到uin之后...aegis.setConfig({uin: '6666'});
info、infoAll、error 和 report
这三个方法是前端性能监控提供的主要上报手段。
// info 可以上报任意字符串,数字,数组,对象,但是只有打开页面的用户在名单中才会上报aegis.info('test');aegis.info('test', 123, ['a', 'b', 'c', 1], {a: '123'});// 也可以上报特定的对象,支持用户传ext参数和trace参数// 注意这种 case 一定要传 msg 字段// msg ext trace 类型为 stringaegis.info({msg: 'test',ext1: 'ext1',ext2: 'ext2',ext3: 'ext3',trace: 'trace',});// 不同于 info,infoAll 表示全量上报aegis.infoAll({msg: 'test',ext1: 'ext1',ext2: 'ext2',ext3: 'ext3',trace: 'trace',});// error 用来表示 JS 错误日志,也是全量上报,一般用于开发者主动获取JS异常,然后进行上报aegis.error({msg: 'test',ext1: 'ext1',ext2: 'ext2',ext3: 'ext3',trace: 'trace',});aegis.error(new Error('主动上报一个错误'));// report 默认是 aegis.report 的日志类型,但是现在您可以传入任何日志类型了aegis.report({msg: '这是一个ajax错误日志',level: Aegis.logType.AJAX_ERROR,ext1: 'ext1',ext2: 'ext2',ext3: 'ext3',trace: 'trace',});
Aegis.logType 枚举值如下:
export enum LogType {API_RESPONSE = '1', // 白名单中的用户,页面上的所有 API 返回都将会被上报INFO = '2', // aegis.info、aegis.infoAll 上报的日志ERROR = '4', // js 错误PROMISE_ERROR = '8', // promise 错误AJAX_ERROR = '16', // ajax 错误SCRIPT_ERROR = '32', // script 加载失败IMAGE_ERROR = '64', // 图片加载失败CSS_ERROR = '128', // css 加载失败CONSOLE_ERROR = '256', // console.error 监控(目前暂未支持)MEDIA_ERROR = '512', // 音视频加载失败RET_ERROR = '1024', // retcode 返回码异常REPORT = '2048', // aegis.report 上报日志默认levelPV = '4096', // 页面 PVEVENT = '8192', // 自定义事件PAGE_NOT_FOUND_ERROR = '16384', // 小程序 页面不存在WEBSOCKET_ERROR = '32768', // websocket错误BRIDGE_ERROR = '65536', // js bridge 错误}
reportEvent
该方法可用来上报自定义事件,系统将会自动统计上报事件的各项指标,例如:PV、平台分布等。
reportEvent 可以支持字符串和对象两种类型上报参数。
字符串类型
aegis.reportEvent('XXX请求成功');
对象类型
ext1、ext2 和 ext3 默认使用 new Aegis 的时候传入的参数,自定义事件上报的时候,可以覆盖默认值。
// name ext trace 类型为 string,name 为必选项aegis.reportEvent({name: 'XXX请求成功', // 必填ext1: '额外参数1',ext2: '额外参数2',ext3: '额外参数3',});
注意
额外参数的三个 key 是固定的,目前只支持 ext1、ext2 和 ext3 。
reportTime
该方法可用来上报自定义测速,例如:
// 假如‘onload’的时间是1saegis.reportTime('onload', 1000);
或者如果需要使用额外参数,可以传入对象类型参数,ext1,ext2,ext3 会覆盖默认值:
// name ext trace 类型为 string,name 和 duration 为必选项aegis.reportTime({name: 'onload', // 自定义测速 nameduration: 1000, // 自定义测速耗时(0 - 60000)ext1: 'test1',ext2: 'test2',ext3: 'test3',});
说明
onload
可以修改为其他的命名。time 和 timeEnd
该方法同样可用来上报自定义测速,适用于两个时间点之间时长的计算并上报,例如:
aegis.time('complexOperation');/*** .* .* 做了很久的复杂操作之后。* .* .*/aegis.timeEnd('complexOperation'); /** 此时日志已经报上去了**/
说明
complexOperation
可以修改为其他的命名。自定义测速是用户上报任意值,服务端对其进行统计和计算。由于服务端不能做脏数据处理,建议用户在上报端进行统计值限制,防止脏数据对整体产生影响。
目前 Aegis 只支持 0 - 60000 的数值计算,如果大于该值,数据会丢弃,建议进行合理改造。
destroy
销毁实例进程,销毁后数据不再上报,并且 Aegis 不再收集用户数据。
aegis.destroy();