Browse Source

global exception log

xf 2 years ago
parent
commit
76b6cf7915
3 changed files with 139 additions and 13 deletions
  1. 124 13
      package-lock.json
  2. 1 0
      package.json
  3. 14 0
      src/main.ts

+ 124 - 13
package-lock.json

@@ -10,6 +10,7 @@
 			"license": "MIT",
 			"dependencies": {
 				"@element-plus/icons-vue": "^2.0.6",
+				"@exceptionless/browser": "^2.0.0",
 				"@microsoft/signalr": "^6.0.8",
 				"@wangeditor/editor": "^5.1.14",
 				"@wangeditor/editor-for-vue": "^5.1.12",
@@ -38,7 +39,6 @@
 			"devDependencies": {
 				"@types/node": "^18.0.3",
 				"@types/nprogress": "^0.2.0",
-				"@types/qs": "^6.9.7",
 				"@typescript-eslint/eslint-plugin": "^5.30.5",
 				"@typescript-eslint/parser": "^5.30.5",
 				"@vitejs/plugin-vue": "^2.3.3",
@@ -136,6 +136,20 @@
 				"url": "https://opencollective.com/eslint"
 			}
 		},
+		"node_modules/@exceptionless/browser": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/@exceptionless/browser/-/browser-2.0.0.tgz",
+			"integrity": "sha512-7MkImpmscg40bGrnxpJsBucUwYAJdsMYhokBpminD6QZkxbomo6CyOJXrjZi6he4qYaNh/K9r2mK7Rgorvjr8w==",
+			"dependencies": {
+				"@exceptionless/core": "2.0.0",
+				"stacktrace-js": "2.0.2"
+			}
+		},
+		"node_modules/@exceptionless/core": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/@exceptionless/core/-/core-2.0.0.tgz",
+			"integrity": "sha512-46tjD+Y3t8tTxq8F4Zyn18M9z7AAxbdSp9dMvh28frpAdFKXG/b2GN0cvXBmb92KDYdpxr+txTK0+fpEzGaYQg=="
+		},
 		"node_modules/@floating-ui/core": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.1.tgz",
@@ -353,12 +367,6 @@
 			"integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==",
 			"dev": true
 		},
-		"node_modules/@types/qs": {
-			"version": "6.9.7",
-			"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-			"dev": true
-		},
 		"node_modules/@types/semver": {
 			"version": "7.3.12",
 			"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz",
@@ -1684,6 +1692,14 @@
 				"node": ">=10.13.0"
 			}
 		},
+		"node_modules/error-stack-parser": {
+			"version": "2.1.4",
+			"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+			"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+			"dependencies": {
+				"stackframe": "^1.3.4"
+			}
+		},
 		"node_modules/es-module-lexer": {
 			"version": "0.9.3",
 			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -3960,6 +3976,46 @@
 			"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
 			"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
 		},
+		"node_modules/stack-generator": {
+			"version": "2.0.10",
+			"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+			"integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+			"dependencies": {
+				"stackframe": "^1.3.4"
+			}
+		},
+		"node_modules/stackframe": {
+			"version": "1.3.4",
+			"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+			"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
+		},
+		"node_modules/stacktrace-gps": {
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
+			"integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
+			"dependencies": {
+				"source-map": "0.5.6",
+				"stackframe": "^1.3.4"
+			}
+		},
+		"node_modules/stacktrace-gps/node_modules/source-map": {
+			"version": "0.5.6",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+			"integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/stacktrace-js": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
+			"integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
+			"dependencies": {
+				"error-stack-parser": "^2.0.6",
+				"stack-generator": "^2.0.5",
+				"stacktrace-gps": "^3.0.4"
+			}
+		},
 		"node_modules/strip-ansi": {
 			"version": "6.0.1",
 			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -4720,6 +4776,20 @@
 				"strip-json-comments": "^3.1.1"
 			}
 		},
+		"@exceptionless/browser": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/@exceptionless/browser/-/browser-2.0.0.tgz",
+			"integrity": "sha512-7MkImpmscg40bGrnxpJsBucUwYAJdsMYhokBpminD6QZkxbomo6CyOJXrjZi6he4qYaNh/K9r2mK7Rgorvjr8w==",
+			"requires": {
+				"@exceptionless/core": "2.0.0",
+				"stacktrace-js": "2.0.2"
+			}
+		},
+		"@exceptionless/core": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/@exceptionless/core/-/core-2.0.0.tgz",
+			"integrity": "sha512-46tjD+Y3t8tTxq8F4Zyn18M9z7AAxbdSp9dMvh28frpAdFKXG/b2GN0cvXBmb92KDYdpxr+txTK0+fpEzGaYQg=="
+		},
 		"@floating-ui/core": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.1.tgz",
@@ -4904,12 +4974,6 @@
 			"integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==",
 			"dev": true
 		},
-		"@types/qs": {
-			"version": "6.9.7",
-			"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-			"dev": true
-		},
 		"@types/semver": {
 			"version": "7.3.12",
 			"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz",
@@ -5874,6 +5938,14 @@
 				"tapable": "^2.2.0"
 			}
 		},
+		"error-stack-parser": {
+			"version": "2.1.4",
+			"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+			"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+			"requires": {
+				"stackframe": "^1.3.4"
+			}
+		},
 		"es-module-lexer": {
 			"version": "0.9.3",
 			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -7411,6 +7483,45 @@
 			"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
 			"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
 		},
+		"stack-generator": {
+			"version": "2.0.10",
+			"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+			"integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+			"requires": {
+				"stackframe": "^1.3.4"
+			}
+		},
+		"stackframe": {
+			"version": "1.3.4",
+			"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+			"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
+		},
+		"stacktrace-gps": {
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
+			"integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
+			"requires": {
+				"source-map": "0.5.6",
+				"stackframe": "^1.3.4"
+			},
+			"dependencies": {
+				"source-map": {
+					"version": "0.5.6",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+					"integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="
+				}
+			}
+		},
+		"stacktrace-js": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
+			"integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
+			"requires": {
+				"error-stack-parser": "^2.0.6",
+				"stack-generator": "^2.0.5",
+				"stacktrace-gps": "^3.0.4"
+			}
+		},
 		"strip-ansi": {
 			"version": "6.0.1",
 			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",

+ 1 - 0
package.json

@@ -11,6 +11,7 @@
 	},
 	"dependencies": {
 		"@element-plus/icons-vue": "^2.0.6",
+		"@exceptionless/browser": "^2.0.0",
 		"@microsoft/signalr": "^6.0.8",
 		"@wangeditor/editor": "^5.1.14",
 		"@wangeditor/editor-for-vue": "^5.1.12",

+ 14 - 0
src/main.ts

@@ -33,6 +33,9 @@ import VueViewer from 'v-viewer';
 // 图片懒加载
 import VueLazyloadNext from 'vue-lazyload-next';
 
+//exception log
+import { Exceptionless } from "@exceptionless/browser";
+
 const app = createApp(App);
 //  signalR 初始化signalr 
 signalR.init(import.meta.env.VITE_APP_SOCKET_API);
@@ -45,6 +48,17 @@ other.elSvg(app);
 app.config.globalProperties.mittBus = mitt();
 app.config.globalProperties.signalr = signalR;
 
+await Exceptionless.startup(c => {
+    c.apiKey= 'i4ofQSLHB0GtqjMjoTI5bXA5XeNwEPrQfcWsTmHA',
+    c.serverUrl= 'http://log.fw.com'
+});
+
+app.config.errorHandler = async (err, instance, info) => {
+    // 向追踪服务报告错误
+    console.log('global: ', err, instance, info)
+    await Exceptionless.submitException(err);
+}
+
 // 全局组件挂载
 app.component('RightToolbar', RightToolbar)
 app.component('Pagination', Pagination)