1.0.6 • Published 2 years ago
yunlogger_yunzhan v1.0.6
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 |
project | 是 | Project 名称 |
logstore | 是 | Logstore 名称 |
device | 是 | 设备来源:pc,h5,android,ios,alipaymp,wechat |
ip | 是 | IP 地址,接口获取 /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 | 类型 | 说明 |
---|---|---|---|
用户ID | userID | string | 未登录为空字符串 |
时间戳 | time | string | 1609830734 (毫秒) |
用户行为 | action | string | leave:离开,enter:进入,click:点击 |
触发组件 | componentID | string | 12 服务端生成前端上报,无值为空字符串 |
触达页面url | target | string | 见url对照表 |
展会ID | exhibitionID | string | 不能为空,为空时需要拿出来沟通 |
上报页面 | url | string | /home |
租户 | tenant | string | 不能为空,为空时需要拿出来沟通 |
渠道 | channel | string | 根据实际投放的渠道的url标识作处理,采集时并不上传,会根据场景拼接到url上,无值为空字符串 |
设备类型 | device | string | pc,h5,android,ios,alipaymp:支付宝小程序,wechat:微信小程序 |
上报平台 | platform | string | consumer:C端,backstage:后管 |
IP地址 | ip | string | 192.168.1.1 |
浏览器标识 | userAgent | string | Mozilla/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 |
页面类型 | category | string | home,见表格2 |
归属方 | owner | string | exhibitor,见表格2 |
归属方ID | ownerId | string | 当owner='EXHIBITION'时为展会id,当owner='EXHIBITOR'时,为展商id,当owner='EXHIBITOR_GROUP'为展团id,当owner='OTHER'为空字符串 |
展团团员ID | memberID | string | 用于支持展团看板团员访问日志数据;无值为空字符串 |
内容 | content | string | 内容ID(当category='meeting'时,对应meeting_id,当category='live'时,对应live_id,当category='information'时对应information_id,以此类推展品、展商、展团、项目、门票、订单等页面)/当category='search'时,为搜索词 |
行为 | behavior | string | 登录login,注册register,收藏colletct,洽谈chat,询盘invest,点赞like,分享share,举报report,复制链接copyLink,下载download,搜索search,退出登录logout,名片交换card,搜索结果页searchResult,点击抽奖raffle,点击投票vote,其它传other |
特定cookie | cnacookie | string | 参考:https://cmp.alibaba-inc.com/log/info.htm?type=2277&id=16 |
referer | 页面来源 | string | 见url对照表 |
2、字段详细解释
字段名称 | 说明 |
---|---|
owner | EXHIBITION展会;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' |
category | home 首页;item 展品页面;exhibitor 展商页面 exhibitorGroup 展团页面;meeting 会议页面;live 直播页面;information 资讯页面;personage 个人页面;login登录;search 搜索页面;project 项目页面;ticket 门票页面;orders 订单页面; promotion招商推广页面;raffle 抽奖页面;vote 投票页面;other 其他页面待定; |
只统计PV/UV
所需参数
参数名 | |
---|---|
ip | IP地址 |
url | 页面url |
tenant | 租户id |
exhibitionID | 展会id |
channelID | 渠道ID,前缀+序号 |
device | pc,h5,android,ios,alipaymp:支付宝小程序,wechat:微信小程序 |
- 需要输出channelID与url的对应表
- channelID命名示例: shanghaidianqi_01(上海电气的第一个页面)