3.0.2 • Published 5 years ago

web-log-tracker v3.0.2

Weekly downloads
2
License
MIT
Repository
gitlab
Last release
5 years ago

应用集成

探针集成

  • 预先配置,通过 CDN 引入自动创建探针
  • 通过 CDN 引入后手动创建探针

预先配置 引入后自动创建探针

将以下代码复制到所有业务代码引入的script标签之前(如果是混合APP,还需要放在cordova.js引入之后)

<script>!(function(c,b,d,a){c[a]||(c[a]={});c[a].config={"app_code":"应用编码XXX","product_code":"产品编码XXX"};var n=b.createElement("script");var tag=b.getElementsByTagName("script")[0];n.async=1;n.src=d;tag.parentNode.insertBefore(n,tag);})(window,document,"https://mic-open.mypaas.com.cn/web-log-tracker/v2/myWebLogTracker.min.js","__myWebLogTracker__");</script>

以上代码进行了以下两项操作:

  1. 创建了一个 script 元素,并从 https://mic-open.mypaas.com.cn/web-log-tracker/v2/myWebLogTracker.min.js 异步下载 myWebLogTracker JavaScript 库;

  2. 根据配置初始化全局 __myWebLogTracker__ 探针对象,后续可以通过该对象调用相应的 API;

该代码已经根据配置创建探针 __myWebLogTracker__ 全局对象,不需要重复创建;除app_code和product_code之外,还可以继续添加更多配置参数(详见探针配置)

手动引入/创建探针

  • CDN 应该在 head 标记顶部附近以及任何其他 JavaScript 或 css 标记之前添加代码;
<script src='https://mic-open.mypaas.com.cn/web-log-tracker/v2/myWebLogTracker.min.js'></script>

该脚本会在全局导出一个 myWebLogTracker 函数,可以通过该函数创建探针对象;

script 脚本不要异步加载,否则脚本还未加载完成就实例化探针会导致 myWebLogTracker 未定义错误

引入脚本后,可以手动创建探针,所有配置都可以根据环境或其他条件动态生成;

混合应用请确保创建探针代码添加在 cordova 脚本之后,探针需要根据 cordova 对象来确认是否为混合应用;

// 创建配置对象,详细配置参考『探针配置』
const options = {
  product_code: '产品编码XXX',
  app_code: '应用编码XXX',
  disabled: process.env.NODE_ENV === 'production' ? false : true,
};

// 创建探针
const tracker = myWebLogTracker(options)

探针创建完成后,相应的数据收集和日志上报会自动处理;

探针配置

探针的配置选项是在探针初始化时以参数的方式传递的,同时也提供相应的 API 动态的修改探针的配置。

配置选项

属性类型描述是否必填默认值
product_codestring产品编码,用于隔离不同产品上报的数据 只能由小写英文字符, 下划线和数字组成
app_codestring产品应用编码,用于隔离不同应用上报的数据 只能由小写英文字符, 下划线和数字组成
tenant_codestringSaaS应用中的租户编码
user_accountstring真实用户标识
is_spaboolean是否为单页应用功能true
page_intervalint检测页面停留时间间隔(单位:ms),配置>0,则视为开启1800000
disable_event_trackboolean禁用标准点击事件上报false
disable_api_hookboolean禁用应用内API请求上报false
disable_error_trackboolean禁用全局JS错误拦截false
disable_report_positionboolean禁用位置上报(只针对于混合应用)false
manual_report_page_loadboolean是否手动上报页面加载时间, 如果设置为 true, 则需要在页面加载完成后调用 reportLoaded API 上报false
api_ignore_urlsarray需要忽略上报API请求的域名,API请求上报开启时有效,支持正则表达式
api_property_cbfunction修正 API 事件上报中 api 属性(api 地址),参数为 API 地址,返回值为字符串null
collect_tagsstring/array定义需要手机事件的标签名称,如:'a','button';默认为所有标签都收集'all'
collect_filterfunction自定义元素过滤。函数接收事件源参数,返回boolean
log_content_attributestring申明式日志属性名称,如:<a href="#" data-log="日志内容"></a>data-log
log_event_attributestring自定义日志类型收集属性,如:<button data-event="提交报告"></button>(如需要与log_content_attribute同时使用,则必须处于同一元素)data-event
route_title_mapsobject自定义页面 Title map,键为需要自定义页面 title 的路径(使用正则表达式匹配),值为上报的 Titlenull
debugboolean是否开启调试模式;开启后则将日志输入到控制台false
disabledboolean是否禁用全部上报false

log_event_attribute (自定义日志事件类型名称属性) 必须和期望得到的 log_content_attribute (自定义日志内容) 处于同一元素; 比如:

  options = {
     log_event_attribute: 'data-custom-event',
     log_content_attribute: 'data-custom-log',
  };
  
  // html 中
  <a data-custom-event='添加到购物车' data-custome-log='橘子' href='#'>橘子</a>

注册SaaS租户编码与真实用户标识

SaaS 的租户编码和真实用户标识一般需要用户登录后动态配置,探针对象提供了 registUser API 注册租户编码和真实用户标识。

registUser 接收一个配置对象,代表需要注册的租户编码和真实用户标识;

// 可以在登录后注册

login().then(() => {
  // 使用天眼平台创建的探针对象为 __myWebLogTracker__,手动创建的探针对象调用相应的对象即可
  window.__myWebLogTracker__.registUser({
    tenant_code: 'SaaS应用租户编码',
    user_account: '真实用户标识'
  });
});

动态修改探针配置

探针创建完成后,有时需要动态修改探针的配置,可以使用探针对象的 modifyConfig API 动态修改探针的配置。

  • WebLogTracker.modifyConfig({ key: string: string | boolean | int | array })

modifyConfig 接收一个配置对象,代表需要修改的探针配置。

// 使用天眼平台创建的探针对象为 __myWebLogTracker__,手动创建的探针对象调用相应的对象即可

window.__myWebLogTracker__.modifyConfig({
  disabled: true,
});

可以动态修改的配置明细如下(具体含义参考上方的配置选项):

  • page_interval,
  • disable_event_track,
  • disable_api_hook,
  • disable_error_track,
  • collect_tags,
  • collect_filter,
  • log_content_attribute,
  • log_event_attribute,
  • api_ignore_urls,
  • disabled

主动上报日志和错误

探针在实例化后,会自动上报一些事件用来收集相应的数据,你也可以在需要的时候手动上报日志和错误事件,探针提供两个接口用于手动上报:report 以及 reportError

  • WebLogTracker.report(eventName, content)

report 接收两个参数:

eventName: 自定义事件名称,

content: 自定义事件内容对象,由于探针会自动获取对应的基本信息(page 信息, vendor 信息 etc.),只需要把对应的事件内容提供到 log 键即可

// 用户下单后发送下单事件

// 使用天眼平台创建的探针对象为 __myWebLogTracker__,手动创建的探针对象调用相应的对象即可
window.__myWebLogTracker__.report('用户下单', {
  log: 'PO123456789', // 自定义内容
});
  • WebLogTracker.reportError(content)

reportError 实际上是 report('error', content) 的简便写法,直接上报对应的错误消息到 error 事件;

// 使用天眼平台创建的探针对象为 __myWebLogTracker__,手动创建的探针对象调用相应的对象即可
window.__myWebLogTracker__.reportError('用户下单', {
  log: `Error Message: ${message}, file: ${filename}, line: ${lineNumber}` // 自定义错误消息内容
});

手动上报页面加载时间

探针自动收集的页面加载时间来源于 performance 对象,对于混合 APP 或一些复杂的异步加载页面来说,通过 performance 获取的页面加载时间不太准确,因此提供一个手动上报页面加载时间的 API.

  • WebLogTracker.reportLoaded()

当调用 reportLoaded 时,会以当前的时间戳来作为页面加载完成的时间。

// 手动上报的时间

document.addEventListener('deviceready', () => {
  // some code...

  window.__myWebLogTracker__.reportLoaded();
});

配置自定义页面 Title

如果需要自定义上报数据的 title 属性,需要在探针实例化提供 route_title_maps 配置。 route_title_maps 接收一个简单的 Javascript 对象,键名为页面的路径(不包含 host),键值为对应的 title。比如:

{
  '/login': '登录',
  '/products': '产品',
};

路径的匹配使用的是正则表达式测试,如果当前页面路径与某个配置的路径匹配成功,则会所用对应的 title 作为上报数据的 title 属性,如果没有匹配项,默认使用 document.title 属性;

3.0.2

5 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago