【基于】前端UBC打点规范:http://wiki.baidu.com/pages/viewpage.action?pageId=1267140894
ubcLogger参数初始化
import {ubcLogger} from 'baidu-ubc-swan-logger';
/*
* 初始化示例
*/
// 目前,ubcLogger提供三种方式初始化
// 初始化v1(基于日志规范1.0)
ubcLogger.set({
version: '1.0',
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0'
});
// 初始化v2 (基于日志规范2.0)
ubcLogger.set({
testMode: true, //打到线下
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0'
});
// 有抽样的初始化
ubcLogger.set({
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0',
sample: {
rate: '0.0008'
}
});
// 自定义公参的初始化
ubcLogger.set({
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0',
queryParams: {
appname: 'lemon',
sn: 'live',
sid: '1002_1003'
}
});
tips
page onShow()时候set pagename set操作可多次执行,ubcLogger将对set的参数执行merge操作,同一配置字段以最后一次的set操作赋值为最终值
tips
** logger日志库0.2.8及更早版本,打点默认使用日志规范1.0 即version = 1.0, 0.2.8版本后的logger日志库,version 默认为2.0** 日志合并仅日志规范v2支持。即:若配置合并打点参数logMergeOpt,并开启自动合并(ifAutoMerge为true),需保证配置的version为2,否则ifAutoMerge配置无效
key | type | value(demo) | 是否必填 | 备注 |
---|---|---|---|---|
testMode | boolean | false | N | 是否打点到线下 |
testUrl | string | N | 自定义配置打点数据的上传地址[testMode为true时生效] | |
version | string | 2.0 | N | 日志规范使用默认2.0 或者 1.0 |
serverId | number | 103997 | Y | 数据组给的serverid (第一次初始化时候必填,后续其他page里init的时候不需要填) |
page | string | y_shake_index | N | 页面标识 |
idfrom | string | res_fuli | N | 页面source(未传入时,优先取getApp().globalData.query,次优先级取swan.getURLQuery()) |
source | string | res_fuli | N | 页面source,同idfrom(未传入时,优先取getApp().globalData.query,次优先级取swan.getURLQuery()) |
from | string | act | N | 日志类型 |
logMergeOpt | Object | {} | N | 日志合并参数配置 |
logMergeOpt.ifAutoMerge | boolean | false | N | 是否开启自动合并,默认不开启 |
logMergeOpt.mergeNumMax | number | 5 | N | 最大日志合并数量 |
logMergeOpt.mergeInterval | number | 5 | N | 合并时间间隔 |
sample.rate | string | 0.01 | N | 打点抽样比例(不填默认不抽样;1不抽样打点正常;0表示不打点,仅仅支持精度小数点后四位0.0001 ) |
queryParams.appname | string | baiduboxapp | N | 产品线标识 (日志规范 version=2.0 时,此配置字段有效) |
queryParams.from | string | N | 大渠道 (日志规范 version=2.0 时,此配置字段有效) | |
queryParams.cfrom | string | N | 小渠道 (日志规范 version=2.0 时,此配置字段有效) | |
queryParams.sid | string | N | 抽样 (日志规范 version=2.0 时,此配置字段有效) | |
queryParams.sn | string | N | 跨多端的业务场景,比如一个appname下的多个项目 (日志规范 version=2.0 时,此配置字段有效) | |
swan_name | string | N |
英文 特殊小程序标记,普通H5和小程序非必传 => 如果要传,需要和策略同学对齐&&联调 |
|
ifSwanReport | boolean | true | N | 将打点同步到小程序开发者平台 |
logErrRetry | boolean | false | N | 是否对上报失败的日志进行上报重试 |
logBackup | boolean | false | N | 是否对上报日志进行备份 |
backupUrl | string | https://activity.baidu.com/activity/felog/log | N | 自定义日志备份地址 |
noUseApiGetUserInfo | boolean | false | N | 不使用小程序api获取用户信息 |
bdussIgnore | boolean | false | N | 不获取bduss |
ubcLogger执行日志发送
// 直接打点{type:xxx,value:xxx,ext:{p1:xxx}}
// 根据数据组要求的字段来
ubcLogger.send({
type: 'c_pv',
value: 'login',
ext: {
p1: 'first'
}
});
tips
必须在init的时候传serverId,否则send不执行 不要在组件的lifecycle的onshow生命周期中打点,容易导致page获取混乱 若配置了自动合并,使用方调用send时,打点数据不会即时发出,打点数据将被暂存,并按照配置规则logMergeOpt进行合并发送
key | type | value(demo) | 是否必填 | 备注 |
---|---|---|---|---|
type | string | c_pv | Y | 数据组给的type |
page | string | y_shake_index | N | 页面标识 |
value | string | login | N | 数据组给的value |
ext | object | {} | N | 数据组给的ext |
ext.p1 | string | more | N | 数据组给的ext.p1 |
ext.p2 | string | more2 | N | 数据组给的ext.p2 |
ext.xxxx(demo) | string | more2 | N | xxxx的key可以自定义 |
ubcLogger手动日志合并 ,send的object数据对象格式同ubcLogger.send接口入参
// 直接打点{type:xxx,value:xxx,ext:{p1:xxx}}
// 根据数据组要求的字段来
ubcLogger.sendMergeLog({
type: 'c_pv',
value: 'login',
ext: {
p1: 'first'
}
});
tips
必须保证set时的version字段值为2,否则sendMergeLog调用效果等同send 多次调用sendMergeLog,打点数据不会即时发出,打点数据将被暂存,并按照配置规则logMergeOpt进行合并发送
ubcLogger开启当前页的时长打点,页面展现begin,页面离开/切后台end
// 根据数据组要求的字段来
ubclogger.setPageTimingLog({
page: 'main',
value: 'login',
ext: {
p1: 'feed1_1_2'
}
});
主动结束ubcLogger时长打点
ubclogger.stopPageTimingLog();
tips
在页面的onshow或者onload时调用,页面未销毁多次调用只会绑定一次 尽量不要在app.js内调用,小程序生命周期不稳定,可能导致sdk获取页面uri失败,此时时长打点将被丢弃 详细打点字段参考
key | type | value(demo) | 是否必填 | 备注 |
---|---|---|---|---|
type | string | c_pv | Y | 数据组给的type |
page | string | y_shake_index | N | 页面标识 |
value | string | login | N | 数据组给的value |
ext | object | {} | N | 数据组给的ext |
ext.p1 | string | more | N | 数据组给的ext.p1 |
ext.p2 | string | more2 | N | 数据组给的ext.p2 |
ext.xxxx(demo) | string | more2 | N | xxxx的key可以自定义 |
key | type | value(demo) | 是否必填 | 备注 |
---|---|---|---|---|
customStop | boolean | true | N | 默认false |
若想要sdk不在页面离开/切后台时干预结束时长打点,可配置此字段为true,时长结束点将只在用户主动调用stopPageTimingLog时发送
logger库还对外提供UbcLogger对象,以满足使用者在一个业务中要打多个(不同serverid的)ubc点的场景
具体使用方法:
import {UbcLogger} from 'baidu-ubc-swan-logger';
// 初始化
// 自定义初始化,可以放小程序的global变量中,比如 getApp().globalData.ubcLogger 中
let ubcLogger = new UbcLogger({
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0'
});
// 或者有抽样的自定义初始化
let ubcLogger = new UbcLogger({
serverId: 10399,
page: 'shake_index',
idfrom: 'res_fuli_0',
sample: {
rate: '0.0008'
}
});
// 如果需要,update 初始化的 options
// 后续不改options也可以不传
ubcLogger.set({
page: 'shake_rules'
});
// 直接打点{type:xxx,value:xxx,ext:{p1:xxx}}
// 根据数据组要求的字段来
ubcLogger.send({
type: 'c_pv',
value: 'login',
ext: {
p1: 'first'
}
});