Browse Source

完善网络请求错误日志

Michael Wang 3 years ago
parent
commit
104f22436e
4 changed files with 62 additions and 12 deletions
  1. 38 8
      src/plugins/axiosApp.ts
  2. 16 4
      src/plugins/axiosNoAuth.ts
  3. 4 0
      src/types/global.d.ts
  4. 4 0
      src/utils/logger.ts

+ 38 - 8
src/plugins/axiosApp.ts

@@ -1,4 +1,4 @@
-import axios from "axios";
+import axios, { AxiosRequestConfig } from "axios";
 import { loadProgressBar } from "axios-progress-bar";
 import { notifyInvalidTokenThrottled } from "./axiosNotice";
 import axiosRetry from "axios-retry";
@@ -30,11 +30,25 @@ _axiosApp.interceptors.request.use(
     return config;
   },
   function (error) {
-    if (error.config.setGlobalMask) {
+    const config: AxiosRequestConfig = error.config;
+    if (config.setGlobalMask) {
       store.decreaseGlobalMaskCount("axios");
     }
     $message.error(JSON.stringify(error));
-    console.log(error);
+    logger({
+      key: "网络请求request error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: config?.url,
+    });
+    logger({
+      key: "网络请求request error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: config?.url,
+      level: "debug",
+      ejn: JSON.stringify(error),
+    });
     return Promise.reject(error);
   }
 );
@@ -50,19 +64,35 @@ _axiosApp.interceptors.response.use(
     return response;
   },
   (error) => {
-    if (error.config?.setGlobalMask) {
+    const config: AxiosRequestConfig = error.config;
+    logger({
+      key: "网络请求response error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: config?.url,
+      aus: error.response?.status,
+    });
+    logger({
+      key: "网络请求response error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: config?.url,
+      aus: error.response?.status,
+      level: "debug",
+      ejn: JSON.stringify(error),
+    });
+    if (config?.setGlobalMask) {
       store.decreaseGlobalMaskCount("axios");
     }
-    // console.log(error.config, error.config["axios-retry"].retryCount);
-    if (error.config?.["axios-retry"]) {
-      const thisTime = error.config["axios-retry"].lastRequestTime;
+    if (config?.["axios-retry"]) {
+      const thisTime = config["axios-retry"].lastRequestTime;
       if (lastRequestTimeForRetry === thisTime) {
         return Promise.reject(error);
       } else {
         lastRequestTimeForRetry = thisTime;
       }
     }
-    const showErrorMessage = !error.config?.noErrorMessage;
+    const showErrorMessage = !config?.noErrorMessage;
     if (!error.response) {
       if (showErrorMessage) {
         // "Network Error" 网络不通,直接返回

+ 16 - 4
src/plugins/axiosNoAuth.ts

@@ -1,4 +1,4 @@
-import axios from "axios";
+import axios, { AxiosRequestConfig } from "axios";
 import { loadProgressBar } from "axios-progress-bar";
 import axiosRetry from "axios-retry";
 
@@ -24,6 +24,12 @@ _axiosNoAuth.interceptors.request.use(
   },
   function (error) {
     $message.error(JSON.stringify(error));
+    logger({
+      key: "网络请求request error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: error.config?.url,
+    });
     return Promise.reject(error);
   }
 );
@@ -36,9 +42,15 @@ _axiosNoAuth.interceptors.response.use(
     return response;
   },
   (error) => {
-    // console.log(error.config, error.config["axios-retry"].retryCount);
-    if (error.config["axios-retry"]) {
-      const thisTime = error.config["axios-retry"].lastRequestTime;
+    const config: AxiosRequestConfig = error.config;
+    logger({
+      key: "网络请求response error",
+      cnl: ["console", "local", "server"],
+      pgu: "AUTO",
+      aul: config?.url,
+    });
+    if (config?.["axios-retry"]) {
+      const thisTime = config["axios-retry"].lastRequestTime;
       if (lastRequestTimeForRetry === thisTime) {
         return Promise.reject(error);
       } else {

+ 4 - 0
src/types/global.d.ts

@@ -26,4 +26,8 @@ declare module "axios/index" {
     /** 设置整页遮罩 */
     setGlobalMask?: boolean;
   }
+
+  interface IAxiosRetryConfig {
+    lastRequestTime: number;
+  }
 }

+ 4 - 0
src/utils/logger.ts

@@ -69,6 +69,10 @@ export default function createLog(detail: LogDetail) {
     omit(detail, "ext"),
     detail.ext
   );
+  // FIXME: 后期设置条件开启非log级别的日志,此时全部打回。
+  if (newDetail.level !== "log") {
+    return;
+  }
   if (detail.cnl?.includes("console")) {
     console.log(newDetail);
   }