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)
  }
}