团队研发文档

开发规范、技术文档等


JsTracker前端监控说明

<h3>文档记录</h3> <table> <thead> <tr> <th>编号</th> <th>描述</th> <th>作者</th> <th>日期</th> <th>备注</th> </tr> </thead> <tbody> <tr> <td>1.0</td> <td>JsTracker前端监控说明</td> <td>Meeler</td> <td>2018-10-30</td> <td></td> </tr> <tr> <td>------------</td> <td>------------</td> <td>------------</td> <td>------------</td> <td>------------</td> </tr> </tbody> </table> <hr /> <h5>端口占用</h5> <ol> <li>9000 storage</li> <li>9001 acceptor-pushProjectUrl</li> <li>9002 openapi-pushProjectUrl</li> <li>9004 offlineLog 离线日志</li> <li>9500 openapi</li> <li>9005 dispatcher-mq-消息分发</li> <li>9006 acceptor-mq-消息接收</li> <li>9007 js-report 上报端口</li> <li>9010 acceptor 默认端口</li> <li>27017 mongodb 默认端口</li> <li>3306 mysql 默认端口</li> </ol> <p>Mysql数据库配置(dev:XXXXX@119.23.17.55:3306/badjs) 1.badjs-web/project.debug.json 2.badjs-web/project.json</p> <p>mongodb数据库配置(mongodb://127.0.0.1:27017/badjs),3091.mzhen.cn 1.badjs-storage/project.debug.json 2.badjs-storage/project.json</p> <h3>Vue 产品监控加码说明</h3> <h4>上报ID申请(ID为空,则不能上报)</h4> <ol> <li> <p>给需要添加前端监控的产品申请上报ID:<a href="http://3091.mzhen.cn:9008/">http://3091.mzhen.cn:9008/</a> 。 gitlab地址:<a href="https://gitlab.mzsvn.com/content/JsTracker.git">https://gitlab.mzsvn.com/content/JsTracker.git</a> 操作步骤:注册新用户-》我的业务-》申请接入 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/3705802a1f24012310e37102a0e69f36?showdoc=.jpg" alt="" /> 注:业务URL必须真实,但可以为*,即不对URL做校验。</p> </li> <li>平台管理员(admin)审核 操作步骤:申请项目列表-》待审核 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/6cdd2bf56d47ab640b336393e1792799?showdoc=.jpg" alt="" /></li> <li>将获取的ID(文档测试id为2)应用于产品加码监控。</li> </ol> <h4>产品加码 (二选一)</h4> <h5>加码方式一、 npm加码</h5> <ol> <li>install npm install badjs-report --save</li> <li>main.js配置</li> </ol> <pre><code class="language-java">// 引入模块 import BJ_REPORT from 'badjs-report'; import VueCookie from 'vue-cookie'; Vue.use(BJ_REPORT); Vue.use(VueCookie);</code></pre> <pre><code class="language-java">// 初始化 BJ_REPORT.init({ id: 2, // 上报 id, 不指定 id 将不上报 uin: decodeURI(VueCookie.get('wechatName') || '秒出用户'), delay: 1000, // 当 combo 为 true 可用,延迟多少毫秒,合并缓冲区中的上报(默认) url: 'https://dataapi.cn.miaozhen.com/jstracker/badjs', // 指定上报地址 ignore: [/Script error/i], // 忽略某个错误 random: 1, // 抽样上报,1~0 之间数值,1为100%上报(默认 1) repeat: 50, // 重复上报次数(对于同一个错误超过多少次不上报) // 避免出现单个用户同一错误上报过多的情况 onReport: function (id, errObj) { console.log(id, errObj); }, // 当上报的时候回调。 id: 上报的 id, errObj: 错误的对象 submit: null, // 覆盖原来的上报方式,可以自行修改为 post 上报等 ext: { clientName: "秒出-平台版-测试环境" }, // 扩展属性,后端做扩展处理属性。例如:存在 msid 就会分发到 monitor, offlineLog: true, // 是否启离线日志 [默认 false] offlineLogExp: 5, // 离线有效时间,默认最近5天 });</code></pre> <pre><code class="language-java">// 系统错误捕获 const errorHandler = (error, vm)=&gt;{ console.error('抛出全局异常'); console.error(vm); console.error(error); BJ_REPORT.report(error); } Vue.config.errorHandler = errorHandler; Vue.prototype.$throw = (error)=&gt; errorHandler(error,this); Vue.prototype.BJ_REPORT = BJ_REPORT;</code></pre> <p>至此可以自动对JS错误进行上报。如需手动上报一些信息,语法如下:</p> <pre><code class="language-java">//主动上报错误日志 BJ_REPORT.report("error msg"); BJ_REPORT.report({ msg: "xx load error", // 错误信息 target: "xxx.js", // 错误的来源js rowNum: 100, // 错误的行数 colNum: 100, // 错误的列数 }); try{ // something throw error ... }catch(error){ BJ_REPORT.report(e); } //info上报,用于记录操作日志 BJ_REPORT.info("info"); //可以结合实时上报,跟踪问题; 不存入存储 BJ_REPORT.debug("debug"); //记录离线日志 BJ_REPORT.offlineLog("offlineLog");</code></pre> <h5>加码方式二、引入外部JS</h5> <ol> <li>JS 文件地址: <a href="https://gitlab.mzsvn.com/content/CONT-CLOUD-FE/tree/develop/public/js">https://gitlab.mzsvn.com/content/CONT-CLOUD-FE/tree/develop/public/js</a></li> <li>根据1将JS文件下载,必须放置在项目的静态文件夹下。(vue-cli放在static目录下,vue-cli3放在public文件夹下)</li> <li>index.html页面引用</li> </ol> <pre><code class="language-java">// 引入文件 &lt;head&gt; &lt;script src="/js/bj-report-tryjs.js"&gt;&lt;/script&gt; &lt;script src="/js/bj-wrap.js"&gt;&lt;/script&gt; &lt;script src="/js/require.js"&gt;&lt;/script&gt; &lt;/head&gt;</code></pre> <pre><code class="language-java">// 初始化配置 &lt;body&gt; &lt;script&gt; BJ_REPORT.init({ id: 2, // 上报 id, 不指定 id 将不上报 uin: decodeURI(VueCookie.get('wechatName') || '秒出用户'), delay: 1000, // 当 combo 为 true 可用,延迟多少毫秒,合并缓冲区中的上报(默认) url: 'https://dataapi.cn.miaozhen.com/jstracker/badjs', // 指定上报地址 ignore: [/Script error/i], // 忽略某个错误 random: 1, // 抽样上报,1~0 之间数值,1为100%上报(默认 1) repeat: 10, // 重复上报次数(对于同一个错误超过多少次不上报) // 避免出现单个用户同一错误上报过多的情况 onReport: function(id, errObj) { console.log(id, errObj); }, // 当上报的时候回调。 id: 上报的 id, errObj: 错误的对象 submit: null, // 覆盖原来的上报方式,可以自行修改为 post 上报等 ext: { clientName: "秒出-平台版-测试环境" }, // 扩展属性,后端做扩展处理属性。例如:存在 msid 就会分发到 monitor, offlineLog: true, // 是否启离线日志 [默认 false] offlineLogExp: 5, // 离线有效时间,默认最近5天 }); &lt;/script&gt; ... &lt;/body&gt;</code></pre>

页面列表

ITEM_HTML