فهرست منبع

初始化阿里云SLS日志框架

Michael Wang 5 سال پیش
والد
کامیت
f341f14707
4فایلهای تغییر یافته به همراه128 افزوده شده و 0 حذف شده
  1. 2 0
      src/features/Login/Login.vue
  2. 4 0
      src/mixins/mixins.js
  3. 60 0
      src/utils/logger.js
  4. 62 0
      src/utils/loghub-tracking.js

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

@@ -131,6 +131,7 @@ import {
   VUE_APP_CONFIG_FILE_SEVER_URL,
 } from "@/constants/constants";
 import UA, { chromeUA } from "@/utils/ua.js";
+import { createLog } from "@/utils/logger";
 
 // 检测devtools.  仅在chrome 72+ 有效。
 let element = new Image();
@@ -309,6 +310,7 @@ export default {
     }
   },
   async created() {
+    createLog({ loginPage: "登录页面-created" });
     if (navigator.connection) {
       console.log("UA: ", navigator.userAgent);
       console.log(

+ 4 - 0
src/mixins/mixins.js

@@ -1,4 +1,5 @@
 import Vue from "vue";
+import { createUserLog } from "@/utils/logger";
 
 Vue.mixin({
   beforeCreate() {
@@ -14,6 +15,9 @@ Vue.mixin({
     });
   },
   methods: {
+    logger(logs) {
+      createUserLog(logs);
+    },
     async serverLog(level, logText) {
       try {
         await this.$http.post(

+ 60 - 0
src/utils/logger.js

@@ -0,0 +1,60 @@
+import "@/utils/loghub-tracking.js";
+const host = "cn-shenzhen.log.aliyuncs.com";
+const project = "examcloud";
+const logstore = "student-client-test";
+const logger = new window.Tracker(`${host}`, `${project}`, `${logstore}`);
+// logger.push("customer", "zhangsan");
+// logger.push("product", "iphone 6s");
+// logger.push("price", 5500);
+// logger.logger();
+// logger.push("customer", "lisi");
+// logger.push("product", "ipod");
+// logger.push("price", 3000);
+// logger.logger();
+
+// 封装logger
+// 注意没有 window.Tracker 的情况
+
+import store from "@/store";
+
+// console.log(store);
+// console.log(store.state.user);
+
+// export function createNoAuthLog(logs) {
+//   for (let [k, v] of Object.entries(logs)) {
+//     logger.push(k, v);
+//   }
+//   logger.logger();
+// }
+
+// ip 定位?
+// 要在用户登录后调用
+export function createUserLog() {
+  try {
+    const user = store.state.user;
+    logger.push("userName", user.displayName);
+    logger.push("userId", user.id);
+    logger.push("rootOrgName", user.rootOrgName);
+    logger.push("rootOrgId", user.rootOrgId);
+    logger.logger();
+  } catch (error) {
+    console.log(error);
+    window._hmt.push(["_trackEvent", "创建用户日志出错-1"]);
+  }
+}
+
+export function createLog(logs) {
+  try {
+    const user = store.state.user;
+    if (user) {
+      logger.push("userId", user.id);
+    }
+    for (let [k, v] of Object.entries(logs)) {
+      logger.push(k, v);
+    }
+    logger.logger();
+  } catch (error) {
+    console.log(error);
+    window._hmt.push(["_trackEvent", "创建用户日志出错-2"]);
+  }
+}

+ 62 - 0
src/utils/loghub-tracking.js

@@ -0,0 +1,62 @@
+// from: http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/31752/cn_zh/1462870126706/loghub-tracking.js?spm=a2c4g.11186623.2.16.16a65ad1spF4TQ&file=loghub-tracking.js
+/* eslint-disable */
+(function(window, document) {
+  function createHttpRequest() {
+    if (window.ActiveXObject) {
+      return new ActiveXObject("Microsoft.XMLHTTP");
+    } else if (window.XMLHttpRequest) {
+      return new XMLHttpRequest();
+    }
+  }
+  function AliLogTracker(host, project, logstore) {
+    this.uri_ =
+      "http://" +
+      project +
+      "." +
+      host +
+      "/logstores/" +
+      logstore +
+      "/track?APIVersion=0.6.0";
+    this.params_ = new Array();
+    this.httpRequest_ = createHttpRequest();
+  }
+  AliLogTracker.prototype = {
+    push: function(key, value) {
+      if (!key || !value) {
+        return;
+      }
+      this.params_.push(key);
+      this.params_.push(value);
+    },
+    logger: function() {
+      var url = this.uri_;
+      var k = 0;
+      while (this.params_.length > 0) {
+        if (k % 2 == 0) {
+          url += "&" + encodeURIComponent(this.params_.shift());
+        } else {
+          url += "=" + encodeURIComponent(this.params_.shift());
+        }
+        ++k;
+      }
+      try {
+        this.httpRequest_.open("GET", url, true);
+        this.httpRequest_.send(null);
+      } catch (ex) {
+        if (
+          window &&
+          window.console &&
+          typeof window.console.log === "function"
+        ) {
+          console.log(
+            "Failed to log to ali log service because of this exception:\n" + ex
+          );
+          console.log("Failed log data:", url);
+        }
+      }
+    },
+  };
+  console.log("im nothing");
+  window.Tracker = AliLogTracker;
+})(window, document);
+console.log("cool");