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

baidu-ubc-swan-logger

v1.7.0

Published

百度ubc日志打点库

Downloads

2

Readme

ubc业务日志

【基于】前端UBC打点规范:http://wiki.baidu.com/pages/viewpage.action?pageId=1267140894

ubcLogger.set(options)

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操作赋值为最终值

初始化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

必须保证set时的version字段值为2,否则sendMergeLog调用效果等同send 多次调用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 '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'
    }
});