| 参数 | 用途 |
| 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'})
注意:该方法对 config 进行覆盖时采用浅合并逻辑,并不会做深度合并。
// 初始化时传入如下配置const aegis = new Aegis({ spa: true, reportApiSpeed: true, pagePerformance: { firstScreenInfo: true }})// 调用 setConfig 修改配置aegis.setConfig({ spa: false, reportAssetSpeed: true, pagePerformance: { urlHandler() { return 'xxx' } }})// 结果如下:{ spa: false, reportApiSpeed: true, reportAssetSpeed: true, pagePerformance: { urlHandler() { return 'xxx' } }}
三、info、infoAll、error 和 report
这几个方法是前端性能监控提供的主要上报手段。
// info 可以上报任意字符串、数字、数组、对象,但是只有打开页面的用户在名单中才会上报aegis.info('test');aegis.info('test', 123, ['a', 'b', 'c', 1], {a: '123'});// 也可以上报特定的对象,支持用户传 ext 参数和 trace 参数// 注意这种 case 一定要传 msg 字段aegis.info({ msg: 'test', ext1: 'ext1', ext2: 'ext2', ext3: 'ext3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7', trace: 'trace',});// 不同于 info,infoAll 表示全量上报aegis.infoAll({ msg: 'test', ext1: 'ext1', ext2: 'ext2', ext3: 'ext3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7', trace: 'trace',});// error 用来表示 JS 错误日志,也是全量上报,一般用于开发者主动获取 JS 异常,然后进行上报aegis.error({ msg: 'test', ext1: 'ext1', ext2: 'ext2', ext3: 'ext3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7', trace: 'trace',});aegis.error(new Error('主动上报一个错误'));// report 默认是 aegis.report 的日志类型,但是现在你可以传入任何日志类型了aegis.report({ msg: '这是一个ajax错误日志', level: '4', // 日志等级,具体取值可参考日志等级小节。 ext1: 'ext1', ext2: 'ext2', ext3: 'ext3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7', trace: 'trace',});
注意:说明:
注意:如你需要使用 ext4 – ext10的扩展字段,你还需要在 前端性能监控 > 应用管理 > 自定义字段枚举配置 模块上传自定义字段枚举表,以确保 ext4 – ext10的内容展示为你预期效果。
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、ext4、ext5、ext6、ext7、ext8、ext9、ext10默认使用 new Aegis 的时候传入的参数,自定义事件上报的时候,可以覆盖默认值。
aegis.reportEvent({ name: 'XXX请求成功', // 必填 ext1: '额外参数1', ext2: '额外参数2', ext3: '额外参数3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7',})
七、reportTime
该方法可用来上报自定义测速,例如:
// 假如‘onload’的时间是1saegis.reportTime('onload', 1000);
或者如果需要使用额外参数,可以传入对象类型参数,ext1、ext2、ext3、ext4、ext5、ext6、ext7、ext8、ext9、ext10会覆盖默认值。
aegis.reportTime({ name: 'onload', // 自定义测速 name duration: 1000, // 自定义测速耗时(0 – 60000) ext1: 'test1', ext2: 'test2', ext3: 'test3', // 上报的 ext4-10需要在控制台配置自定义字段枚举表,上报的内容如果不在自定义字段枚举表内会被改写为 undefined ext4: 'ext4', ext5: 'ext5', ext6: 'ext6', ext7: 'ext7',});
注意:说明:
八、time 和 timeEnd
该方法同样可用来上报自定义测速,适用于两个时间点之间时长的计算并上报,例如:
aegis.time('complexOperation');/** * . * . * 做了很久的复杂操作之后。 * . * . */aegis.timeEnd('complexOperation'); /** 此时日志已经报上去了**/
注意:说明:
九、destroy
销毁实例进程,销毁后数据不再上报,并且 Aegis 不再收集用户数据。
aegis.destroy();
十、日志等级
| 键(level) | 值(name) |
| 1 | '白名单日志' |
| 2 | '一般日志' |
| 4 | '错误日志' |
| 8 | 'Promise 错误' |
| 16 | 'Ajax 请求异常' |
| 32 | 'JS 加载异常' |
| 64 | '图片加载异常' |
| 128 | 'css 加载异常' |
| 256 | 'console.error' |
| 512 | '音视频资源异常' |
| 1024 | 'retcode 异常' |
| 2048 | 'aegis report' |
| 4096 | 'PV' |
| 8192 | '自定义事件' |
| 16384 | '小程序页面不存在' |
| 32768 | ''websocket 错误' |
| 65536 | 'js bridge 错误' |