Browse Source

feat: 错误日志上传修改

TIANYONG 2 weeks ago
parent
commit
60cb048343

+ 11 - 50
src/hooks/errorLog/index.ts

@@ -1,8 +1,4 @@
-import dayjs from 'dayjs';
-import { sysExceptionLogSave } from '/src/utils/baseApi'
-import { storeData } from "/src/store";
-import { browser } from "/src/utils";
-import state from "/src/state";
+import { uploadErrorLog } from "./uploadLog";
 
 type uploadType = {
   clientType?: string;
@@ -22,51 +18,16 @@ type uploadType = {
  */
 export default function useErrorLog() {
   const _uploadErrorLog = async (event: any) => {
-    let defaultParams = {
-      appKey: 'GYM', // 应用标识(GYT,GYM,KT,KLX,CBS),可用值:GYM,GYT,KLX,KLX_JG,KT,CBS
-      appType: browser().android ? 'ANDROID' : browser().ios && storeData.isApp ? 'IOS' : 'WEB', // 应用类型(IOS,ANDROID,HARMONY),可用值:IOS,ANDROID,HARMONY,WEB
-      clientType: '', // 客户端类型(TEACHER,STUDENT,SCHOOL,BACKEND),可用值:BACKEND,SCHOOL,TEACHER,STUDENT,TENANT	
-      content: '', // 内容
-      deviceType: null, // 设备类型
-      deviceVersion: null, // 设备版本
-      exceptionTime: null, // 异常时间
-      exceptionType: 'ERROR', // 异常类型(ERROR,RECORD),可用值:ERROR,RECORD	
-      phone: null, // 手机号
-      userAgent: window.navigator.userAgent, // 客户端信息
-      
-    }
-    console.log('errorLog','错误',event)
-    try {
-      const href = window.location.href;
-
-      console.log(window.location.hash, 'errorLog')
-
-      // 错误信息
-      // 资源加载失败,可以在这里处理错误
-      const contentError = `Error message: ${event.target.tagName || ''}${
-        event.target.src || event.target.href || ''
-      };lineno: ${event.lineno || ''};message: ${
-        event.message || ''
-      };filename: ${event.filename || ''};fileUrl: ${
-        window.location.href
-      };reason: ${event.reason?.toString() || ''};`;
-      // }
-
-      const params = [
-        {
-          ...defaultParams,
-          clientType: state.systemType === 'teacher' ? 'TEACHER' : state.systemType === 'student' ? 'STUDENT' : 'BACKEND',
-          content: contentError,
-          exceptionTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
-          phone: storeData.user?.phone,
-          userAgent: window.navigator.userAgent,
-        }
-      ];
-      console.log(params, '错误信息', 'errorLog')
-      await sysExceptionLogSave(params);
-    } catch {
-      //
-    }
+    // 错误信息
+    const contentError = `Error message: ${event.target.tagName || ''}${
+      event.target.src || event.target.href || ''
+    };lineno: ${event.lineno || ''};message: ${
+      event.message || ''
+    };filename: ${event.filename || ''};fileUrl: ${
+      window.location.href
+    };reason: ${event.reason?.message || ''};
+    stack: ${event.reason?.stack || ''};`;
+    uploadErrorLog(contentError)
   };
   /**
    * 开始监听错误日志并上传

+ 42 - 0
src/hooks/errorLog/uploadLog.ts

@@ -0,0 +1,42 @@
+import state from "/src/state";
+import dayjs from 'dayjs';
+import { sysExceptionLogSave } from '/src/utils/baseApi'
+import { browser } from "/src/utils";
+import { storeData } from "/src/store";
+
+// 上传错误日志
+export const uploadErrorLog = async (contentError: string) => {
+	//
+    let defaultParams = {
+		appKey: 'GYM', // 应用标识(GYT,GYM,KT,KLX,CBS),可用值:GYM,GYT,KLX,KLX_JG,KT,CBS
+		appType: browser().android ? 'ANDROID' : browser().ios && storeData.isApp ? 'IOS' : 'WEB', // 应用类型(IOS,ANDROID,HARMONY),可用值:IOS,ANDROID,HARMONY,WEB
+		clientType: '', // 客户端类型(TEACHER,STUDENT,SCHOOL,BACKEND),可用值:BACKEND,SCHOOL,TEACHER,STUDENT,TENANT	
+		content: '', // 内容
+		deviceType: null, // 设备类型
+		deviceVersion: null, // 设备版本
+		exceptionTime: null, // 异常时间
+		exceptionType: 'ERROR', // 异常类型(ERROR,RECORD),可用值:ERROR,RECORD	
+		phone: null, // 手机号
+		userAgent: window.navigator.userAgent, // 客户端信息
+		
+	  }
+	console.log('errorLog','错误',event)
+	try {
+	console.log(window.location.hash, 'errorLog')
+
+	const params = [
+		{
+		...defaultParams,
+		clientType: state.systemType === 'teacher' ? 'TEACHER' : state.systemType === 'student' ? 'STUDENT' : 'BACKEND',
+		content: contentError,
+		exceptionTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
+		phone: storeData.user?.phone,
+		userAgent: window.navigator.userAgent,
+		}
+	];
+	// console.log(params, '错误日志参数', 'errorLog')
+	await sysExceptionLogSave(params);
+	} catch {
+	//
+	}
+}

+ 23 - 18
src/page-instrument/view-detail/index.tsx

@@ -41,6 +41,7 @@ import ExerciseStatistics from "../custom-plugins/ExerciseStatistics"
 import { musicData } from "/src/view/music-score"
 import Vip from "/src/page-instrument/component/vip"
 import { getSvgPngToSize } from "/src/helpers/svgToPng"
+import { uploadErrorLog } from '/src/hooks/errorLog/uploadLog'
 // import bgJson from "./images/index.json";
 
 // const DelayCheck = defineAsyncComponent(() =>
@@ -178,8 +179,10 @@ export default defineComponent({
       state.guideInfo = guideInfoStore
       try { 
         await getMusicDetail(id);
-      } catch (err) {
+      } catch (err: any) {
         console.error(err);
+        const contentError = `reason: ${err?.message || ''};stack: ${err?.stack || ''};`;
+        uploadErrorLog(contentError)
         state.isLoading = false;
         isEmptyMusicShow.value = true
         // 需要向外面(iframe)派发计时器数据的时候触发
@@ -360,23 +363,25 @@ export default defineComponent({
       // console.timeEnd("渲染加载耗时");
     };
     function handleOnRendered(osmd: any) {
-      // try{
-      //   handleRendered(osmd)
-      // }catch(err:any){
-      //   console.log(err, "err")
-      //   // 需要向外面(iframe)派发计时器数据的时候触发
-      //   if(query.isbeatTimes){
-      //     console.log("webApi_beatTimes",err)
-      //     window.parent.postMessage(
-      //       {
-      //         api: "webApi_beatTimes",
-      //         data: "节拍器时值错误!!"
-      //       },
-      //       "*"
-      //     );
-      //   }
-      // }
-      handleRendered(osmd)
+      try{
+        handleRendered(osmd)
+      }catch(err:any){
+        console.log(err, "err")
+        const contentError = `reason: ${err?.message || ''};stack: ${err?.stack || ''};`;
+        uploadErrorLog(contentError)
+        // 需要向外面(iframe)派发计时器数据的时候触发
+        if(query.isbeatTimes){
+          console.log("webApi_beatTimes",err)
+          window.parent.postMessage(
+            {
+              api: "webApi_beatTimes",
+              data: "节拍器时值错误!!"
+            },
+            "*"
+          );
+        }
+      }
+      // handleRendered(osmd)
     }
     /** 指法配置 */
     const fingerConfig = computed<any>(() => {

+ 2 - 1
src/utils/index.ts

@@ -163,4 +163,5 @@ export const debounce = (fn: Function, ms = 0) => {
 // 使用正则表达式匹配小数点后第一位数字是否是 0 或 9
 export const checkDecimal = (num: number | string) => {
 	return /^\d*\.(0|9)/.test(num.toString());
-}
+}
+