SLS RUM SDK支持添加对应的接口,用于上报自定义事件数据到日志服务。您可以使用该功能统计用户点击、埋点等业务信息。
概述
您在SLS RUM应用中创建实例并完成数据接入配置后,系统将生成对应的SDK脚本,您只需在执行系统生成的脚本后再执行对应的接口脚本,即可实现自定义事件数据上报。如何创建实例及配置数据接入参数,请参见接入监控数据到SLS RUM。
上报自定义事件接口说明
SLS_RUM.addLog()
接口用于上报自定义事件。SLS_RUM.addLog()
接口支持定义一个JSON格式的参数,支持嵌套JSON格式。上报的数据支持使用日志服务查询分析语句。
SLS_RUM.addLog()
接口的调用方式如下:
SLS_RUM.addLog({
a: 'b',
c: 'd',
d: 'e'
})
上报自定义JS Error接口说明
SLS_RUM.addError()
接口用于上报自定义JS Error。
SLS_RUM.addError()
接口的调用方式如下:SLS_RUM.addError(new Error('init error'))
支持手动捕获错误后通过
SLS_RUM.addError()
接口上报。try {
} catch (err) {
SLS_RUM.addError(err)
}
自定义事件上报时机
无论是CDN同步加载还是CDN异步加载的SLS RUM SDK,您只要在执行SLS RUM应用中自动生成的脚本后再执行对应的接口脚本,都可以成功调用SLS_RUM.addError()
或SLS_RUM.addError()
接口,上报自定义事件数据。
如果您采用的是CDN异步加载,则在调用SLS_RUM.addLog()
或者SLS_RUM.addError()
接口时,系统自动生成的脚本会将数据推送到缓存中,待SDK初始化完成后全部上报。
例如在执行CDN异步加载脚本后,再执行SLS_RUM.addLog()
接口脚本,将成功上报自定义事件数据。
<script>
(function (h, o, u, n, d) {
h=h[d]=h[d]||{p:[],e:[],q:[],addLog:function(log){h.p.push(log)},addError:function(log){h.e.push(log)},onReady:function(c){h.q.push(c)},};d=o.createElement(u);d.async=1;d.src=n;n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n)
})(window, document, 'script', 'https://o.alicdn.com/sls/sls-rum/sls-rum.js', 'SLS_RUM')
SLS_RUM.onReady(function () {
SLS_RUM.init({
host: 'cn-hangzhou.log.aliyuncs.com',
project: 'sls-rum',
logstore: 'aaaaa-rum-raw',
instance: 'aaaaa',
env: 'prod',
service: 'web',
enableError: true,
enableResourcePerf: true,
enableAjax: true,
enablePerf: true,
enableTrace: false,
sampleRate: 1,
})
})
</script>
<script>
// 上报自定义事件数据成功。
SLS_RUM.addLog({
a: 'b',
c: 'd',
d: 'e'
})
</script>
使用自定义事件上报接口的最佳方式
虽然SLS RUM SDK解决了SDK初始化问题,您在调用该SDK时,不会出现
SLS_RUM.addLog()
或SLS_RUM.addError()
接口不存在的问题,但仍然不推荐您直接使用SLS_RUM.addError()
或SLS_RUM.addError()
接口。最佳方式是在接口外包裹一层工具函数,示例如下:export function myAddLog(log) {
if (SLS_RUM.addLog) {
SLS_RUM.addLog(log)
}
}