npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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

reportAnalytics小程序参考文档

在进行执行业务日志打点时,logger默认将执行swan.reportAnalytics操作,将日志发送到小程序日志管理平台 使用方可在参数初始化set操作中设置reportAnalytics字段为false,来阻止logger的该默认操作

4. 如何在日志管理平台查看日志 logger执行reportAnalytics打点操作的事件ID为ubc,ubc事件下包括四个参数:page,type,source,value 若使用方需要在查看日志记录,需要进行下列操作

  1. 进入对应小程序管理平台 -> 数据分析 -> 自定义事件
  2. 圈选事件下拉中的 -> 添加自定义事件 -> 单条添加。

事件ID为ubc,该事件下四个参数page,type,source,value

  1. 也可直接批量添加

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需要配置到白名单内(百度小程序框架下无需配置,微信或其它环境下需要)