1.0.6 • Published 2 years ago

yunlogger_yunzhan v1.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

SLS JavaScript Logging SDK

1. 安装

  • 通过 npm 安装 SDK npm i yunlogger_yunzhan
  • 在 app.ts 中通过 import 引入 SDK
import YunLOGGER from "yunlogger_yunzhan";

2. 添加可信域名

登录微信公众平台,进入<开发><开发设置><服务器域名>,将 host 添加为 request 合法域名。

3. init 初始化

init(options: object)

配置接口,用来调整 SDK 的基础机制。应该在 App()调用之前调用。

首次调用初始化 SDK,再次调用覆盖之前传入的配置,可多次调用。

参数名称是否必填说明
host日志服务所在地域的 Endpoint
projectProject 名称
logstoreLogstore 名称
device设备来源:pc,h5,android,ios,alipaymp,wechat
ipIP 地址,接口获取 /api/v2/auth/sys/ip
platform平台,默认 consumer C 端/后管:consumer/backstage
channelID渠道 ID,推广页使用,无渠道默认 0

4. 基础信息更新

change(options:object)

  • 页面初始化调用,存储租户 ID 和用户 ID
  • 用户登录、退出操作更新信息
参数名称是否必填说明
userID用户 ID,游客为 0
tenant租户 ID

5. send 消息

send(options:object)

组件交互触发消息

参数名称是否必填说明
url上报地址
action行为
target触达 url
componentID触发 ID
exhibitionID展会 ID
category页面类型
owner归属方
ownerid归属方 ID
content内容 ID/搜索词
behavior行为

方法初始化

import YunLOGGER from 'yunlogger_yunzhan';
import loggerConfigs from '@/utils/loggerconsts';

const { ENV_TYPE } = process.env;
const loggerConfig = loggerConfigs[`${ENV_TYPE}-logger`] || loggerConfigs['production-logger'];

const initLogger = (ip) => {
  const { channelID = "" } = urlToObject();
  window.logger = new YunLOGGER({
    ip,
    device: "pc",
    channelID,
    ...loggerConfig,
  });

  // 简化传参的埋点方法
  window.sender = (params) => {
    window.logger.send({
      url: window.location.pathname,
      action: "click",
      target: "",
      componentID: "",
      exhibitionID: "",
      category: "",
      owner: "OTHER",
      ownerId: "",
      content: "",
      behavior: "",
      tenant: sessionStorage.getItem("tenantId"),

      ...(params || {}),
    });
  };
};

logconfig根据环境取值

获取url中参数urlToObject

/**
 * @function 获取url中的参数并转换为对象
 * @returns {object}
 * */
const urlToObject = (url = window.location.href) => {
  // 箭头函数默认传值为当前页面url
  let obj = {},
    index = url.indexOf('?'), // 看url有没有参数
    params = url.substr(index + 1); // 截取url参数部分 id = 1 & type = 2

  if (index != -1) {
    // 有参数时
    let parr = params.split('&'); // 将参数分割成数组 ["id = 1 ", " type = 2"]
    for (let i of parr) {
      // 遍历数组
      let arr = i.split('='); // 1) i id = 1   arr = [id, 1]  2)i type = 2  arr = [type, 2]
      obj[arr[0]] = arr[1]; // obj[arr[0]] = id, obj.id = 1   obj[arr[0]] = type, obj.type = 2
    }
  }

  return obj;
};

获取ip

IP 地址,接口获取 /api/v2/auth/sys/ip

logconfig

/**
 * 开发环境埋点配置
 */
const Dev_Logger = {
  project: 'hz-hj-web-8hd',
  host: 'cn-hangzhou.log.aliyuncs.com',
  logstore: 'hz-hj-qd-8dev',
};

/**
 * 预发环境埋点配置
 */
const Pre_Logger = {
  project: 'hz-hj-web-8hd',
  host: 'cn-hangzhou.log.aliyuncs.com',
  logstore: 'hz-hj-qd-8test',
};

/**
 * 测试环境埋点配置
 */
const Daily_Logger = {
  project: 'hz-hj-web-8hd',
  host: 'cn-hangzhou.log.aliyuncs.com',
  logstore: 'hz-hj-qd-8test',
};

/**
 * 生产环境埋点配置
 */
const Prod_Logger = {
  project: 'hz-hj-web-8hd',
  host: 'cn-hangzhou.log.aliyuncs.com',
  logstore: 'hz-hj-qd-8prod',
};

export default {
  'development-logger': devLogger,
  'pre-logger': preLogger,
  'daily-logger': dailyLogger,
  'production-logger': prodLogger,
};

发送埋点demo

 // 点击的埋点
  const buryItemPoint = (params) => {
    window.sender({
      url: '/project/detail',
      action: 'click',
      category: 'project',
      owner: 'EXHIBITOR',
      ownerId: data?.ownerId,
      exhibitionID: exbId || sessionStorage.getItem('exhibitionId'),
      ...params,
    });
  };

参数详解释

1、埋点字段说明

字段名key类型说明
用户IDuserIDstring未登录为空字符串
时间戳timestring1609830734 (毫秒)
用户行为actionstringleave:离开,enter:进入,click:点击
触发组件componentIDstring12 服务端生成前端上报,无值为空字符串
触达页面urltargetstring见url对照表
展会IDexhibitionIDstring不能为空,为空时需要拿出来沟通
上报页面urlstring/home
租户tenantstring不能为空,为空时需要拿出来沟通
渠道channelstring根据实际投放的渠道的url标识作处理,采集时并不上传,会根据场景拼接到url上,无值为空字符串
设备类型devicestringpc,h5,android,ios,alipaymp:支付宝小程序,wechat:微信小程序
上报平台platformstringconsumer:C端,backstage:后管
IP地址ipstring192.168.1.1
浏览器标识userAgentstringMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51
页面类型categorystringhome,见表格2
归属方ownerstringexhibitor,见表格2
归属方IDownerIdstring当owner='EXHIBITION'时为展会id,当owner='EXHIBITOR'时,为展商id,当owner='EXHIBITOR_GROUP'为展团id,当owner='OTHER'为空字符串
展团团员IDmemberIDstring用于支持展团看板团员访问日志数据;无值为空字符串
内容contentstring内容ID(当category='meeting'时,对应meeting_id,当category='live'时,对应live_id,当category='information'时对应information_id,以此类推展品、展商、展团、项目、门票、订单等页面)/当category='search'时,为搜索词
行为behaviorstring登录login,注册register,收藏colletct,洽谈chat,询盘invest,点赞like,分享share,举报report,复制链接copyLink,下载download,搜索search,退出登录logout,名片交换card,搜索结果页searchResult,点击抽奖raffle,点击投票vote,其它传other
特定cookiecnacookiestring参考:https://cmp.alibaba-inc.com/log/info.htm?type=2277&id=16
referer页面来源string见url对照表

2、字段详细解释

字段名称说明
ownerEXHIBITION展会;EXHIBITOR 展商;EXHIBITOR_GROUP 展团;OTHER 其他。1.展会首页所有的点击事件,action='click',owner='EXHIBITION',owner_id='展会id',进入事件,action='enter',根据具体进入而定,比如首页点击展品,展品属于展商,owner='EXHIBITOR',展品属于展团,owner='EXHIBITOR_GROUP' 离开事件,action='leave',owner='EXHIBITION',owner_id='展会id', 2.展品详情页面事件根据展品属于展商展团而定owner 3.展商详情页面都属于展商 owner='EXHIBITOR' 4.展团详情页面都属于展团 owner='EXHIBITOR_GROUP' 5.会议详情页面事件根据会议所属展商展团展会而定owner 6.直播详情页面事件根据直播所属展商展团展会而定owner 7.资讯详情页面事件都属于展会 owner='EXHIBITION' 8.商机页面事件都属于展会 owner='EXHIBITION' 9.展品展商展团会议直播等列表页都属于展会 owner='EXHIBITION' 10.个人页面、登录页、注册页面等其他页面都属于owner='OTHER'
categoryhome 首页;item 展品页面;exhibitor 展商页面 exhibitorGroup 展团页面;meeting 会议页面;live 直播页面;information 资讯页面;personage 个人页面;login登录;search 搜索页面;project 项目页面;ticket 门票页面;orders 订单页面; promotion招商推广页面;raffle 抽奖页面;vote 投票页面;other 其他页面待定;

只统计PV/UV

所需参数

参数名
ipIP地址
url页面url
tenant租户id
exhibitionID展会id
channelID渠道ID,前缀+序号
devicepc,h5,android,ios,alipaymp:支付宝小程序,wechat:微信小程序
  • 需要输出channelID与url的对应表
  • channelID命名示例: shanghaidianqi_01(上海电气的第一个页面)
1.0.6

2 years ago

1.0.5

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.0

2 years ago