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

@tbjy/tbdx-logger

v0.1.5

Published

前端日志 - 淘宝大学

Downloads

14

Readme

tbdx-logger

前言

淘宝大学 - 前端日志 支持 web 端,小程序端,内部自动化采集客户端设备,访问页面地址等信息。

sls 平台

在阿里云 sls 平台,创建 projectlogstore。 具体参考:https://yuque.antfin-inc.com/ll36/bzwoow/goguxb

logger 对象注释

/**
 * 记录日志
 * @param {object} init 初始化(可重复调用,后面覆盖前面) option:{
 *  url:'', //sls的url
 *  debug:false, //是否开启调试状态
 *  throttle:{delay:1000,count:1}, // 1s内最多发送3条(防止死循环爆表)
 *  defaultData, // 设置固定参数,后续日志会自动带上
 *  output: [], //关键字移除,不发送log,选填
 *  beforeSend: (data) => data, //发送之前对数据进行处理(如果返回的data为空则不再发送),选填
 * }
 * @param {object} setDefault 设置固定参数 覆盖 init 的 defaultData
 * @param {object} clearDefault 清除固定参数
 * @param {object} info|error|warn|debugger 发送日志 第一个参数 data:{msg:'',remark:''}; 第二个参数 ext:{rate:0.2}
 * @param {string|Error} info|error|warn|debugger 发送日志 第一个参数 data:'xxx' 'xxx'会自动拼接成{msg:'xxx'}; 第二个参数 ext:{rate:0.2}
 * @param {object} pageShow 记录进入页面 data:{url:'',query:''};url(可选),当前页面地址,默认读取;query(可选),当前页面参数,会拼接到url后面
 * @param {object} pageHide 记录离开页面
 */

自动采集信息

PC

| key | 描述 | | ------------- | ---------------------------- | | pageUrl | 页面地址 | | pageReferrer | 上一页面地址 | | pageOrigin | 页面域名 | | clientUa | 浏览器 UA | | clientBrowser | 浏览器型号(Chrome,Safari) | | clientVersion | 浏览器版本号 | | clientPlat | 客户端平台(PC,Mobile) |

小程序

| key | 描述 | | -------------- | ---------------------- | | pageUrl | 页面地址 | | pageReferrer | 上一页面地址 | | clientPlatform | 客户端平台(iOS) | | clientModel | 设备型号(iPhone12,1) | | clientSystem | 设备系统版本(13.1.3) | | clientVersion | 客户端版本号(9.1.1) |

调用参考

PC

/**
 * 初始化
 * index 入口 index.js
**/
/** other code **/
logger.init({
  url: 'https://tbdx-haoxue-assets.cn-hangzhou.log.aliyuncs.com/logstores/taobao_miniapp/track?APIVersion=0.6.0',
  debug: true, // 控制台打印信息
  throttle: { delay: 1000, count: 3 }, // 1s内最多发送3条(防止死循环爆表)
  output: [
    '令牌过期',
  ],
  beforeSend: (data) => data
});
/** other code **/

/**
 * 初始化
 * 母版页 BasicLayout
**/
/** other code **/
  componentDidMount() {
      getUserInfo().then((res) => {
        const { userInfo } = this.props;
        if (res.success && res.data) {
          res = res.data;
          /** other code **/
          // 初始化写入登录人信息
          logger.setDefault({
            uid: res.userId,
            tbUid: res.externalUid,
            nick: res.userName, //  姓名
          });
          // 或者
          // logger.init({
          //   defaultData: {
          //     uid: res.userId,
          //     tbUid: res.externalUid,
          //     nick: res.userName, //  姓名
          //   },
          // });
        }
      }).catch((err) => {
        console.error(err);
      });
    };
  }
/** other code **/

/**
 * 发送日志
 * utils fetch.js
**/
/** other code **/
  .catch(err=>{
    logger.warn({
      position: 'util/fetch->fail',
      msgType: 'fetch_fail',
      requestUrl: url,
      requestData: JSON.stringify(data),
      msg: err || '请求失败',
    });
  })
/** other code **/

PC示意图

小程序

/**
 * 初始化
 * 小程序入口 app.js
**/
import logger from '@ali/tbdx-logger';
App({
  /** other code **/
  onLaunch(options) {
    // 获取用户信息
    this.getUserInfo().then(res=>{
      // 日志初始化
      logger.init({
        url:'https://tbdx-haoxue-assets.cn-hangzhou.log.aliyuncs.com/logstores/taobao_miniapp/track?APIVersion=0.6.0',
        defaultData:{
          nick: res ? res.externalNick : 'nologin',
          uid: res ? res.externalUid : '0',
          env,
          miniVersion
        },
        debug:false
      });
    }).catch(err => {
      // 发送警告日志
      logger.warn({
        position: 'app->onLaunch',
        msgType: 'getUserInfo',
        msg: err
      });
    });
    // 日志初始化
    logger.init({url:'https://tbdx-haoxue-assets.cn-hangzhou.log.aliyuncs.com/logstores/taobao_miniapp/track?APIVersion=0.6.0'});
    this.getMiniAppSystemInfo();
  },
  /** other code **/
}

/**
 * 发送日志
 * 页面跳转失败 util/business.js/togglePageResult
**/
import logger from '@ali/tbdx-logger';

export function togglePageResult(visable = true, options = {}) {
  const { title = '', brief = '', remark = '' } = options;
  /** other code **/
  const param = {
    position: 'util/business->togglePageResult',
    msgType: 'togglePageResult',
    msg: `页面错误 ==> title:${title},content:${brief}`,
    remark
  }
  // 记录日志
  logger.error(param);

  // // 记录日志(带扩展参数:采样率)
  // logger.error(param,{rate:0.5}); // 10% 的概率正式上传服务器
  /** other code **/
}

小程序示意图

更新

2019 年 11 月 07 日 10:39:47 v0.0.1:

小程序已测试通过(通过 my.request 发送请求)

2019 年 11 月 08 日 19:37:44 v0.0.5:

内置节流可通过 init 设置 throttle,控制节流;PC 已测试通过(通过内置 jsonp 发送请求)

2019 年 11 月 15 日 15:46:54 v0.0.6:

新增 setDefault 方法,设置固定参数,可代替 init({defaultData:{xxx:xxxx}})

2019 年 11 月 27 日 15:11:32 v0.0.10:

新增 clearDefault 方法,清除原有设定的默认参数。 fixBug:init({defaultData:{xxx:xxxx}})setDefault 会覆盖原来的 option.defaultData,原有的参数无法保留,该版本已修复。

2020 年 05 月 15 日 15:47:16 v0.0.11:

新增 logger.info , logger.warn , logger.error , logger.debug 新增第二个参数 object 类型,目前支持传入 {rate:0.1} (采样率 10%) 调用函数,真正上传服务器的概率为 10% 场景:大量重复的信息日志,必要但不重要,可以采用该方法减少上传频率。

2020 年 07 月 31 日 14:23:33 v0.0.12:

新增 logger.pageShow , logger.pageHide 记录用户报错时,最近访问的 3 个页面和每个页面停留时长,方便还原用户报错场景。

使用方式:进入页面时候调用 logger.pageShow(),离开是调用 logger.pageHide();

  • 使用技巧:
  1. 单页面应用(SPA)PC 和 H5 的项目,可以在 logger 初始化时,加入 tracker:true,如 logger.init({url:'xxx',tracker:true,debug:false}),该组件会自动监听 hashChange,记录访问路径,无需再调用 logger.pageShow() 和 logger.pageHide() ;当然也可取消监听,自行调用 pageShow 和 pageHide。
  2. 小程序多页面应用,需要到每个页面 js 部分的 onShow 和 onHide 地方调用 pageShow 和 pageHide,会很麻烦;可以利用修饰器模式,将每个页面配置当做参数,传入修饰器,修饰器内拦截 onShow 和 onHide 等生命周期,插入公用业务逻辑,如 SPM 统计,日志等等。

2020年 12 月 11 日 16:07:01 v0.0.16:

新增 logger.info , logger.warn , logger.error , logger.debug 新增第二个参数 object 类型,新增支持传入 {maxLength:1000} (msg最大的字符 1000,默认500) 场景:针对少量特殊 msg 过长;注意,可能会超过 get 请求允许的最大长度,需要自行测试。

2021年 06 月 2 日 11:37:25 v0.0.17: 增加 output 数组,对于不需要记录的关键词进行匹配排除 增加 beforeSend 方法,该方法会在send之前执行,将data返回出去,可以进行二次加工后再发送日志

2023年03月23日11:45:07 sypl v0.1.4 适配移动端H5,增加UA获取的设备字段 分别发布,内/外网,需修改package.json 中 "name": "@tbjy/tbdx-logger", "version": "0.1.4", "publishConfig"