帮你快速理解、总结文档立即下载

实例方法

最近更新时间:2026-09-28 17:02:02
我的收藏
前端性能监控为您提供多种实例方法用于上报数据。本文介绍 RUM 提供的 Aegis 实例方法,包括公共方法(继承自 aegis-core)以及 RN 应用场景独有的方法。

前提条件

参见 安装和初始化 文档,完成 SDK 的安装和初始化。

公共实例方法

setConfig

该方法用于修改实例配置。使用场景:通常无法在初始化时就获取到用户的 uin,可以先传入 id 完成实例化,待获取到 uin 后再调用 setConfig 传入,避免初始化前发生的错误无法被监听。
const aegis = new Aegis({
id: 'pGUVFTCZyewxxxxx'
});

// 拿到 uin 之后...
aegis.setConfig({
uin: '6666'
});
注意:
该方法对配置进行覆盖时采用浅合并逻辑,不做深度合并。例如初始化时传入 spa: true, reportApiSpeed: true,再调用 setConfig({ spa: false }),最终配置为 spa: false, reportApiSpeed: true。

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',
});

// error 用来表示 JS 错误日志,也是全量上报,一般用于开发者主动获取 JS 异常,然后进行上报
aegis.error({
msg: 'test',
ext1: 'ext1',
ext2: 'ext2',
ext3: 'ext3',
});
aegis.error(new Error('主动上报一个错误'));

// report 默认是 aegis.report 的日志类型,但可以传入任意日志类型
aegis.report({
msg: '这是一个接口错误日志',
level: '16', // 日志等级,具体取值可参考日志等级小节
ext1: 'ext1',
ext2: 'ext2',
ext3: 'ext3',
trace: 'trace',
});
说明:
如需使用 ext4 - ext10 扩展字段,还需在 前端性能监控 > 应用管理 > 自定义字段枚举配置 模块上传自定义字段枚举表,以确保 ext4 - ext10 的内容展示为预期效果。

reportEvent

该方法可用来上报自定义事件,系统将会自动统计上报事件的各项指标(例如 PV、平台分布等),支持字符串和对象两种类型上报参数。
// 字符串类型
aegis.reportEvent('XXX请求成功');

// 对象类型:ext1 - ext10 默认使用 new Aegis 时传入的参数,上报时可以覆盖
aegis.reportEvent({
name: 'XXX请求成功', // 必填
ext1: '额外参数1',
ext2: '额外参数2',
ext3: '额外参数3',
});

reportTime

该方法可用来上报自定义测速:
// 假如 'onload' 的时间是 1s
aegis.reportTime('onload', 1000);

// 传入对象类型参数,ext1 - ext10 会覆盖默认值
aegis.reportTime({
name: 'onload', // 自定义测速 name
duration: 1000, // 自定义测速耗时(0 - 60000)
ext1: 'test1',
ext2: 'test2',
ext3: 'test3',
});

time 和 timeEnd

该方法同样可用来上报自定义测速,适用于两个时间点之间时长的计算并上报:
aegis.time('complexOperation');
/**
* .
* .
* 做了很久的复杂操作之后。
* .
* .
*/
aegis.timeEnd('complexOperation'); // 此时日志已经报上去了
说明:
自定义测速是用户上报任意值,服务端对其进行统计和计算。目前 Aegis 只支持0 - 60000的数值计算,建议在上报端进行统计值限制,防止脏数据对整体产生影响。

destroy

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

RN 独有实例方法

reportPageView

在路由切换处手动上报页面 PV,同时更新后续所有日志的页面来源(from 字段)。需要在初始化时传入 spa: true,并在路由切换处调用(或使用路由框架集成自动触发,见 性能监控 页面流转监控章节)。
aegis.reportPageView('Home');

reportPageDisplay

用于标记页面显示结束点并上报(走 PERFORMANCE 链路):传入 type: 'ttfd' 时采集 TTFD 结束点(业务数据就绪时刻)并触发该页面性能指标聚合上报;传入 type: 'ttid' 时上报 TTID。
aegis.reportPageDisplay({
route: 'Home',
type: 'ttfd', // 标记 TTFD 结束点
duration: 1234, // 页面显示耗时(ms)
endTimestampMs: Date.now(),
});
一般由 SDK 内部插件调用;业务侧标记 TTFD 推荐使用 <TimeToFullDisplay record /> 组件(见 性能监控),无需直接调用本方法。

日志等级

Aegis.logType 枚举值如下(标记"浏览器专属"的类型在 RN 环境下不会产生):
键(level)
值(name)
RN 适用性
1
接口请求日志(白名单日志)
✅
2
一般日志(aegis.info / aegis.infoAll)
✅
4
JS 执行错误
✅
8
Promise 错误
✅
16
接口请求异常
✅
32
JS 加载异常
浏览器专属
64
图片加载异常
浏览器专属
128
CSS 加载异常
浏览器专属
256
console.error
浏览器专属
512
音视频资源异常
浏览器专属
1024
返回码异常
✅
2048
aegis report
✅
4096
PV
✅
8192
自定义事件
✅
16384
小程序页面不存在
小程序专属
32768
websocket 错误
浏览器专属
65536
JS bridge 错误
浏览器专属