有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
前端性能监控为您提供多种实例方法用于上报数据,您可以通过实例方法修改实例配置、自定义上报事件、自定义上报测试资源等。
目前 RUM 提供的 Aegis 实例方法如下:
参数
用途
setConfig
传入配置对象,包括用户 ID 和 UIN 等信息。
info
主要上报字段,用于上报白名单日志。
下列两种情况日志才会报到后台:
1. 在白名单的用户打开了前端页面。
2. 对应的页面发生了错误。
infoAll
主要上报字段,用于上报白名单日志。该上报与 info 唯一的区别:
info 指定用户上报。
error
主要上报字段,用于上报错误信息。
report
用来上报任意类型的日志信息。
reportEvent
上报自定义事件。
reportTime
上报自定义测速资源。
time
上报自定义测速资源,与 timeEnd 共同使用。适用于两个时间点之间时长的计算并上报。
timeEnd
上报自定义测速资源,与 time 共同使用。适用于两个时间点之间时长的计算并上报。
destroy
销毁 aegis 实例。

前提条件

参见 安装和初始化 文档,选择任意一种方式完成前端性能监控 SDK 的安装和初始化。

实例方法

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 的类型为 string
aegis.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 上报日志默认level
PV = '4096', // 页面 PV
EVENT = '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 类型为 string
aegis.reportEvent({
name: 'XXX请求成功', // 必填
ext1: '额外参数1',
ext2: '额外参数2',
ext3: '额外参数3',
})

注意
额外参数的三个 key 是固定的,目前只支持 ext1、ext2 和 ext3。

reportTime

该方法可用来上报自定义测速,例如:
// 假如‘onload’的时间是1s
aegis.reportTime('onload', 1000);
或者如果需要使用额外参数,可以传入对象类型参数,ext1,ext2,ext3 会覆盖默认值:
// name ext 类型为 string
aegis.reportTime({
name: 'onload', // 自定义测速 name
duration: 1000, // 自定义测速耗时(0 - 60000)
ext1: 'test1',
ext2: 'test2',
ext3: 'test3',
});
说明
onload 可以修改为其他的命名。

time 和 timeEnd

该方法同样可用来上报自定义测速,单位为 ms,适用于两个时间点之间时长的计算并上报,例如:
aegis.time('complexOperation');
/**
* .
* .
* 做了很久的复杂操作之后。
* .
* .
*/
aegis.timeEnd('complexOperation'); /** 此时日志已经报上去了**/
说明
complexOperation 可以修改为其他的命名。
自定义测速是用户上报任意值,服务端对其进行统计和计算。由于服务端不能做脏数据处理,建议用户在上报端进行统计值限制,防止脏数据对整体产生影响。
目前 Aegis 只支持 0 - 60000 的数值计算,如果大于该值,数据将会丢弃,建议您进行合理改造。

destroy

销毁实例进程,销毁后数据不再上报,并且 Aegis 不再收集用户数据。
aegis.destroy();