ubc-baidu-swan-logger-internal
v1.8.2
Published
百度ubc日志打点库(供外部)
Downloads
3
Readme
百度ubc业务日志
【基于】前端UBC打点规范:http://wiki.baidu.com/pages/viewpage.action?pageId=1267140894
ubcLogger.set(options)
ubcLogger参数初始化
import {ubcLogger} from 'ubc-baidu-swan-logger-internal';
/*
* 初始化示例
*/
// 目前,ubcLogger提供三种方式初始化
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操作赋值为最终值
初始化options字段说明
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.send(object)
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进行合并发送
send的object字段
| 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.sendMergeLog(object)
ubcLogger手动日志合并 ,send的object数据对象格式同ubcLogger.send接口入参
// 直接打点{type:xxx,value:xxx,ext:{p1:xxx}}
// 根据数据组要求的字段来
ubcLogger.sendMergeLog({
type: 'c_pv',
value: 'login',
ext: {
p1: 'first'
}
});
tips
多次调用sendMergeLog,打点数据不会即时发出,打点数据将被暂存,并按照配置规则logMergeOpt进行合并发送
ubcLogger.setPageTimingLog(object, customStop)
ubcLogger开启当前页的时长打点,页面展现begin,页面离开/切后台end
// 根据数据组要求的字段来
ubclogger.setPageTimingLog({
page: 'main',
value: 'login',
ext: {
p1: 'feed1_1_2'
}
});
ubcLogger.stopPageTimingLog()
主动结束ubcLogger时长打点
ubclogger.stopPageTimingLog();
tips
在页面的onshow或者onload时调用,页面未销毁多次调用只会绑定一次 尽量不要在app.js内调用,小程序生命周期不稳定,可能导致sdk获取页面uri失败,此时时长打点将被丢弃 详细打点字段参考
setPageTimingLog的object字段
| 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可以自定义 |
setPageTimingLog的customStop
字段
| key |type | value(demo) | 是否必填 | 备注 | |------------|-----------|-------------------| ----------|------------------| | customStop | boolean | true | N | 默认false |
若想要sdk不在页面离开/切后台时干预结束时长打点,可配置此字段为true,时长结束点将只在用户主动调用stopPageTimingLog时发送
扩展功能
logger库还对外提供UbcLogger对象,以满足使用者在一个业务中要打多个(不同serverid的)ubc点的场景
具体使用方法:
import {UbcLogger} from 'ubc-baidu-swan-logger-internal';
// 初始化
// 自定义初始化,可以放小程序的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'
}
});
注意事项
1. ES6转ES5
本工程没有进行es6->es5的转换,请使用同学务必勾选小程序开发者工具中的es语法转换,参考资料
对于微信小程序原生创建的工程,调试时需要开启【增强编译】 通过okam框架build的wx_dist工程,开启【es6转es5】即可
2. 鉴权 以下2个百度小程序API使用前需要鉴权(鉴权帮助文档)
不申请也可以正常打点,但是cookie中无cuid+bduss
| # |API | 备注 | |------------|-----------|--------------------| | | getCommonSysInfo| 获取用户cuid放在cookie中
3. 关于reportAnalytics
在进行执行业务日志打点时,logger默认将执行swan.reportAnalytics操作,将日志发送到小程序日志管理平台 使用方可在参数初始化set操作中设置reportAnalytics字段为false,来阻止logger的该默认操作
4. 如何在日志管理平台查看日志
logger执行reportAnalytics打点操作的事件ID为ubc
,ubc事件下包括四个参数:page
,type
,source
,value
若使用方需要在查看日志记录,需要进行下列操作
- 进入对应小程序管理平台 -> 数据分析 -> 自定义事件
- 圈选事件下拉中的 -> 添加自定义事件 -> 单条添加。
事件ID为
ubc
,该事件下四个参数page
,type
,source
,value
- 也可直接批量添加
5. 微信小程序请求白名单 需要在小程序开发者后台,配置以下2个域名
开发 -> 开发管理 -> 开发设置 -> 服务器域名
https://mbd.baidu.com https://www.baidu.com
6. 关于日志重试
参看文档>>>
7. 获取用户信息
sdk内部默认使用小程序api:getCommonSysInfo
获取baiduid等用户信息,但针对微信环境、以及一些不支持该api的矩阵宿主环境,
sdk内部提供另一套方案获取用户标识baiduid,以实现pv去重。具体方案:
向大搜server端 `https://www.baidu.com/favicon.ico?from=ubcloggergetbaiduid&_` 发送GET请求
从请求返回携带的cookie中获取用户baiduid
微信环境内默认使用该方式,其余宿主环境,需要使用方自行配置参数(初始化时设置noUseApiGetUserInfo为true)。 该请求涉及的域名
https://www.baidu.com
需要配置到白名单内(百度小程序框架下无需配置,微信或其它环境下需要)