浏览代码

阿里云日志记录改为异步请求

Michael Wang 5 年之前
父节点
当前提交
4c9dd835b7
共有 4 个文件被更改,包括 35 次插入21 次删除
  1. 14 0
      src/features/Login/Login.vue
  2. 4 0
      src/utils/logger.js
  3. 4 3
      src/utils/loghub-tracking.js
  4. 13 18
      src/utils/monitors.js

+ 14 - 0
src/features/Login/Login.vue

@@ -374,6 +374,12 @@ export default {
       action: "page created",
       UA: navigator.userAgent,
     });
+    // 测试log顺序
+    // createLog({
+    //   currentPage: "登录页面2",
+    //   action: "page created",
+    //   UA: navigator.userAgent,
+    // });
     if (navigator.connection) {
       console.log("UA: ", navigator.userAgent);
       console.log(
@@ -537,6 +543,14 @@ export default {
       }
     },
     async login() {
+      // 测试 createLog 在网络堵塞的情况下,是否会堵塞页面
+      // alert("haha");
+      createLog({
+        currentPage: "登录页面--login clicked",
+        action: "page created",
+        UA: navigator.userAgent,
+      });
+      // alert("haha end");
       this.errorInfo = "";
       // epcc立即登录
       if (!this.isEPCC && this.disableLoginBtn) {

+ 4 - 0
src/utils/logger.js

@@ -1,5 +1,7 @@
 import "@/utils/loghub-tracking.js";
 import { VUE_APP_SLS_STORE_NAME } from "@/constants/constants";
+import moment from "moment";
+
 const host = "cn-shenzhen.log.aliyuncs.com";
 const project = "examcloud";
 const logstore = VUE_APP_SLS_STORE_NAME;
@@ -44,6 +46,7 @@ export function createUserDetailLog(logs) {
     for (let [k, v] of Object.entries(logs)) {
       logger.push(k, v);
     }
+    logger.push("clientDate", moment().format("hh:mm:ss.SSS"));
     logger.logger();
   } catch (error) {
     console.log(error);
@@ -64,6 +67,7 @@ export function createLog(logs) {
     for (let [k, v] of Object.entries(logs)) {
       logger.push(k, v);
     }
+    logger.push("clientDate", moment().format("hh:mm:ss.SSS"));
     logger.logger();
   } catch (error) {
     console.log(error);

+ 4 - 3
src/utils/loghub-tracking.js

@@ -28,7 +28,7 @@
       this.params_.push(key);
       this.params_.push(value);
     },
-    logger: function() {
+    logger: async function() {
       var url = this.uri_;
       var k = 0;
       while (this.params_.length > 0) {
@@ -47,8 +47,9 @@
          * https://help.aliyun.com/document_detail/31752.html
          */
 
-        this.httpRequest_.open("GET", url, false);
-        this.httpRequest_.send(null);
+        // this.httpRequest_.open("GET", url, true);
+        // this.httpRequest_.send(null);
+        await window.fetch(url);
       } catch (ex) {
         if (
           window &&

+ 13 - 18
src/utils/monitors.js

@@ -83,24 +83,19 @@ window.addEventListener("unhandledrejection", function(event) {
   //   }
   // );
   // 此错误由上传阿里云日志触发,会被重复好几次
-  try {
-    if (
-      event.reason &&
-      ((event.reason &&
-        event.reason.includes &&
-        event.reason.includes("OperationError")) ||
-        (event.reason.message &&
-          event.reason.message.includes &&
-          event.reason.message.includes("OperationError")) ||
-        (event.reason.name &&
-          event.reason.name.includes &&
-          event.reason.name.includes("OperationError")))
-    ) {
-      return;
-    }
-  } catch (error) {
-    return;
-  }
+  // 改为fetch,阿里云日志的错误不应该触发到这里
+  // try {
+  //   if (
+  //     event.reason &&
+  //     ((event.reason && event.reason.includes("OperationError")) ||
+  //       (event.reason.message &&
+  //         event.reason.message.includes("OperationError")))
+  //   ) {
+  //     return;
+  //   }
+  // } catch (error) {
+  //   return;
+  // }
   console.log("unhandledrejection event", event, event.reason);
   // 会造成死循环,logger.log 在网络异常的情况下,会有unhandledrejection
   // createLog({