# rebugger
**Repository Path**: xiaolei-ye/rebugger
## Basic Information
- **Project Name**: rebugger
- **Description**: bug collection,bug detection,前端异常监控系统 性能监控 埋点接入 多项目管理 异常日志收集 异常处理 异常分析 异常报表 设备分析 用户分析 区域分析
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 7
- **Created**: 2021-05-11
- **Last Updated**: 2021-05-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 项目说明
> rebugger-embed: 埋点项目
可以收集系统捕获异常和手动上报数据、其中异常包括 unCaught 自动捕获js异常、httpError 接口异常、sourceError 静态资源加载
异常、unhandledRejection 未处理promise异常 handledRejection 已处理promise异常 caught 手动上报异常 warn 手动上报警
告信息、info 手动上报日志信息
> rebugger-service: 接口服务项目
所用技术 koa2 + typescript + mysql + redis + sequelize + jwt + pm2 + memory-cache(本地缓存和redis可以随时切换)
> rebugger-admin: 控制台项目
vue2 + vuex + vue-router + element-ui + echarts 等技术
> rebugger-schedule: 定时任务项目 用于报表统计等任务开发
待补充、可用于用于分析、浏览器设备占比分析、地区分析、操作系统分析、屏幕大小占比分析、等前端决策性数据
该项目为本人业余时间从0开始纯手写项目、项目已在公司多项目中实践,已收集百万异常数据和日志数据,为多项目提前发现大量异常点,保证了项目的稳定和质量
## 埋点接入
> 静态文件脚本引入
```
// 获取城市信息 必须引入
// 埋点引入
```
> 动态引入
```
// 获取城市信息 必须引入
// 动态埋点引入
```
## 项目控制台截图
解决github图片不显示问题
解决方法,打开路径C:\Windows\System32\drivers\etc下的hosts文件 添加如下地址
```
# GitHub Start
192.30.253.112 github.com
192.30.253.119 gist.github.com
151.101.184.133 assets-cdn.github.com
151.101.184.133 raw.githubusercontent.com
151.101.184.133 gist.githubusercontent.com
151.101.184.133 cloud.githubusercontent.com
151.101.184.133 camo.githubusercontent.com
151.101.184.133 avatars0.githubusercontent.com
151.101.184.133 avatars1.githubusercontent.com
151.101.184.133 avatars2.githubusercontent.com
151.101.184.133 avatars3.githubusercontent.com
151.101.184.133 avatars4.githubusercontent.com
151.101.184.133 avatars5.githubusercontent.com
151.101.184.133 avatars6.githubusercontent.com
151.101.184.133 avatars7.githubusercontent.com
151.101.184.133 avatars8.githubusercontent.com
```
修改hosts文件后,刷新githab页面
## 埋点属性
埋点属性提供了apikey 、环境禁用设置、异常上传模式、自定义字段收集等配置信息
> 属性配置方式,只需要将配置script标签属性即可 例如:
```
```
> 动态接入属性配置 通过setAttribute方法配置埋点属性 例如
```
```
> 埋点属性
| params | Type | Description |
| ------- | ------ | ------------------------------------------ |
| id | String | 必填, 且值为rebugger |
| apikey | String | 必填, 用于项目区分,不同项目apikey不一样 |
| silent | Boolean | 选填默认false, 如果为true,禁用rebugger不收集任何数据 |
| silentDev | Boolean | 选填默认false, 如果为true,不再收集开发环境的错误 |
| silentTest | Boolean | 选填默认false, 如果为true,不再收集测试环境的错误 |
| silentPre | Boolean | 选填默认false, 如果为true,不再收集预发布环境的错误 |
| reportMode | String | 选填默认onError, 异常上传模式 onError 立即上传 byNum 按天存储满多少个上传 byDay 按天上传 onErrorOffline 立即上报且支持线下缓存 |
| useCustomField | Boolean | 选填默认false, 是否收集自定义字段,保存在metaData里面 |
| customField | Object | 选填, 通过埋点设置必须是json字符串建议在埋点后script标签里面定义,配置的数据将被保存在metaData字段里面 |
| silentVideo | Boolean | 选填默认false, 是否开启视频录制, 异常场景还原, 该功能待开发, |
> 其它配置属性
| params | Type | Description |
| ------- | ------ | ------------------------------------------ |
| reportNum | Number | 选填默认10, byNum上传模式满n个上传数据,缓解服务端压力 |
| limitNum | Number | 选填默认20, byDay上传模式默认超过20个会主动上传数据 |
| baseUrl | String | 选填默认http://localhost:9090,定义上报服务器地址 |
| customField | Object | 选填和埋点属性同一个属性, 自定义保存字段 数据将会保存在metaData里面 origin: localStorage / sessionStorage / window / cookie 不能获取跨域信息 需要将js文件下载 |
// 定义属性配置
## 上报接口
> 代码中主动上报 使用全局Rebugger对象
```
// 使用日志对象时必须先判断该对象是否存在
if ( Rebugger ) {
...
Rebugger.default.上报方法(上报信息对象);
}
// 安全使用 添加try catch
try {
if ( Rebugger ) {
...
Rebugger.default.上报方法(上报信息对象);
}
} catch (error) {
}
```
> 1、日志收集
Rebugger.default.reportInfo(errorInfo);
> 2、警告信息
Rebugger.default.reportWarning(errorInfo);
> 3、http请求异常
Rebugger.default.reportHttpError(errorInfo);
> 4、js异常收集
Rebugger.default.reportError(errorInfo);
> 5、promise异常上报
Rebugger.default.reportHandledRejection(errorInfo);
> errorInfo 字段信息对照
```
// 异常字段
ReportFieldV = {
日志名称: "name",
异常信息: "message",
异常堆栈: "stack",
异常文件: "fileName",
所在文件行: "lineNumber",
所在文件列: "columnNumber",
其它信息: "metaData",
异常组件: "componentName",
组件参数: "propsData",
资源接口地址: "src",
状态码: "status",
状态内容: "statusText",
}
```
## 安装部署
> rebugger-embed
打包埋点文件 npm run build:em
> rebugger-admin
npm install
npm run dev
npm run build
> rebugger-service 和 rebugger-schedule
npm run serve 开始调试模式
部署模式需要环境全局安装pm2
npm install -g pm2 // 安装pm2
npm run restart:dev // 部署到开发环境
npm run restart:test // 部署到测试环境
npm run restart:prod // 部署到生产环境
## Changelog
### 2019.07.18
> v0.0.1 \* 初始化项目
### 2019.08.01
> v0.0.1 \* rebugger-embed 开发完成
### 2019.08.12
> v0.0.1 \* rebugger-server 和 rebugger-admin 开发完成
### 2019.08.20
> v0.0.1 \* 项目开始应用于生产
### 2019.10.15
> v0.0.2 \* 更新异常上传方式和rebugger-schedule
### 2019.12.15
> v0.1.1 \* 开始迁移到github,开源此项目
### 2020.2.9
> v0.1.3 \* 拆分项目
For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader).