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

@hyext/hyext-reporter

v1.2.3

Published

小程序上报日志统一

Downloads

45

Readme

小程序统一日志上报

  • @hyext/hyext-reporter
  • 负责统一小程序日志数据,不做主动上报
  • 提供全局心跳,默认 30 秒心跳一次
  • 日志延迟 500ms 上报,每次上报最多 100 条;

安装

npm install @hyext/hyext-reporter

引入

import { ExtReporter, LogEvents } from '@hyext/hyext-reporter'

实例化 - new ExtReporter(config)

config

  • 实例化配置

| 参数 | 类型 | 必填 | 默认 | 说明 | | ----------------------------------- | -------- | ---- | ----- | ------------------------------ | | PlatformRequest | Callback | 是 | -- | 平台定义上报方法 | | CommonInfo | Object | 是 | -- | 日志公用信息 | | OpenReport | boolean | 否 | true | 是否开启上报 | | Debug | boolean | 否 | false | 是否开启 debug | | ReportDelay | number | 否 | 500 | 延迟上报时差(ms),0 不延迟 | | ReportSizeLimit | number | 否 | 25 | 每次上报大小上限(KB),0 不限制 | | HeartbeatFreq | number | 否 | 60000 | 心跳频率 |

PlatformRequest

(params) => Promise<void>

  • 日志上报方法

params

  • 日志上报回调参数

| 属性 | 类型 | 说明 | | ---- | ------------- | ------------ | | logs | log[] | 上报日志数组 |

log

  • 上报日志信息

| 属性 | 类型 | 说明 | | -------- | ------ | -------- | | eid | string | 事件 id | | eid_desc | string | 事件名称 | | prop | Object | 上报数据 |

CommonInfo

  • 日志公共数据,每条日志的基础信息,可覆盖

| 参数 | 类型 | 必填 | 说明 | | ----------- | ------ | ---- | --------- | | ext_id | string | 是 | 小程序 ID | | uid | string | 是 | 用户 ID | | pid | string | 是 | 主播 ID | | game_id | string | 是 | 品类 ID | | env | string | 是 | 环境信息 |

env

  • 环境信息

| 取值 | 说明 | | ------- | -------- | | unknown | 未知环境 | | online | 正式环境 | | test | 测试环境 | | dev | 开发环境 |

示例

  • 先通过平台获取基础数据
const basInfo = {
  ext_id: "abababa", // 小程序ID
  uid: "202020", // 用户uid
  pid: "202011", // 主播ID
  game_id: "1002", // 品类ID
  env: "online",
}
  • 实例化
const reporter = new ExtReporter({
  Debug: true, // 是否开启debug日志,可选
  OpenReport: true, // 是否开启上报,可选
  PlatformRequest: ({ logs }) => {
    // 上报日志数据,必填
    console.log("report logs": logs);
  },
  CommonInfo: { // 日志公共数据
    uid: basInfo.uid,
    pid: basInfo.pid,
    ext_id: basInfo.ext_id,
    game_id: basInfo.game_id,
    env: basInfo.env
  }
});

开始心跳 - reporter.startHeartBeat(fields);

  • 只有一个全局的心跳
  • 默认 30s 一次心跳
  • 心跳用于统计用户在线时长,用户进入即开始心跳即可

参数

| 参数 | 类型 | 必填 | 默认 | 说明 | | ----------------- | ------ | ---- | ---- | -------------- | | fields | Object | 否 | -- | 日志自定义数据 |

示例

reporter.startHeartBeat();

停止心跳 - reporter.endHeartBeat()

  • 停止全局的心跳
  • 用户退出时调用

示例

reporter.endHeartBeat();

普通上报 - reporter.reportBusiMetric(info, fields)

参数

| 参数 | 类型 | 必填 | 默认 | 说明 | | ----------------- | ------ | ---- | ---- | ---------------------------- | | info | Object | 是 | -- | 日志描述,不会被 fields 覆盖 | | fields | Object | 否 | -- | 日志自定义数据 |

info

  • 日志描述信息,不会被 fields 覆盖
  • 系统预制了一些日志描述信息 LogEvents 方便使用
  • 也可定义自己日志描述信息

| 参数 | 类型 | 必填 | 说明 | | ---- | ------ | ---- | ---------- | | key | string | 是 | 业务关键词 | | desc | string | 是 | 业务描述 |

LogEvents

  • 预制日志描述信息
  • 均为与 info 同构变量
  • 按需上报即可

| 变量 | 描述 | | ------------------------ | ---------------------- | | LogEvents.USER_ACTIVE | 用户互动 | | LogEvents.USER_SEND_GIFT | 用户送礼 | | LogEvents.USER_SEND_WORD | 用户发言 | | LogEvents.USER_SUBSCRIBE | 用户订阅 | | LogEvents.USER_SHARE | 用户分享 | | LogEvents.GAME_CREATE | 游戏开局,某轮游戏开始 | | LogEvents.GAME_FINISH | 游戏结束,某轮游戏结束 |

fields

  • 自定义上报数据
  • 键值不能与以下取值重复,否则会被覆盖

| 敏感键值 | 类型 | 说明 | 数据源 | | ----------- | ------ | -------------- | ----------- | | key | string | 业务关键词 | info | | desc | string | 业务描述 | info | | type | number | 日志类型 | info/默认值 | | client_time | number | 日志创建时间戳 | 系统生成 |

示例

  • 自定义日志信息 info 的上报
extReporter.reportBusiMetric({
  key: 'ext_diy/my_action'
  desc: '自定义事件描述'
}, {
  data : 'your_data'
});
  • 上报用户交互
reporter.reportBusiMetric(LogEvents.USER_ACTIVE, {
  act: '啥交互?'
});
  • 上报用户送礼
reporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {
  gift_id: 2222,
  gift_count: 1,
  gift_amount: 100,
  total_pay: 0,
});
  • 上报用户发言
reporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {
  word: '你说啥?'
});
  • 上报订阅主播
reporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);
  • 上报用户分享
reporter.reportBusiMetric(LogEvents.USER_SHARE, {
  share_type: 1
});
  • 上报开始游戏
reporter.reportBusiMetric(LogEvents.GAME_CREATE);
  • 上报游戏结束
reporter.reportBusiMetric(LogEvents.GAME_FINISH);

非统一日志上报 - reporter.report(base, info, fields)

  • 非统一日志上报,特殊情况下使用

参数

| 参数 | 类型 | 必填 | 默认 | 说明 | | ----------------- | ------ | ---- | ---- | -------------------------- | | base | Object | 是 | -- | 日志业务信息 | | info | Object | 否 | -- | 日志描述,不被 fields 覆盖 | | fields | Object | 否 | -- | 日志自定义数据 |

base

  • 对应后统计台业务上报信息

| 参数 | 类型 | 必填 | 说明 | | -------- | ------ | ---- | -------- | | eid | string | 是 | 事件 id | | eid_desc | string | 是 | 事件名称 |

示例

reporter.report({
  eid: 'usr/diy/eid',
  eid_desc: '非统一上报日志'
}, {
  type: '固定信息'
}, {
  data: '上报数据',
})

清除缓存日志 - reporter.clear()