先提交一下前端监控机器人--观察者
This commit is contained in:
		
							
								
								
									
										39
									
								
								ui/lib/js/observer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								ui/lib/js/observer.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| /** | ||||
|  * 获取符合要求的请求 | ||||
|  * @param entries 监测的请求对象 | ||||
|  * @param type 设置满足条件的请求类型 | ||||
|  * @returns {PerformanceEntry[]} | ||||
|  */ | ||||
| const getRequests = (entries = performance.getEntriesByType('resource'), type = ['xmlhttprequest']) => | ||||
|     entries?.filter(e => type.includes(e.initiatorType)) || [] | ||||
|  | ||||
| /** | ||||
|  * 观察者工具对象,用于前端接口监测 | ||||
|  */ | ||||
| class Observer { | ||||
|   constructor() { | ||||
|     this.saveLogs(getRequests()) | ||||
|     this.ins = new PerformanceObserver((list, ob) => { | ||||
|       const watchLogs = getRequests(list.getEntriesByType("resource")) | ||||
|       this.saveLogs(watchLogs) | ||||
|     }) | ||||
|     this.ins.observe({entryTypes: ["resource"]}) | ||||
|   } | ||||
|  | ||||
|   saveLogs(list = []) { | ||||
|     list.map(e => { | ||||
|       if (!/sockjs/.test(e.name)) { | ||||
|         const api = { | ||||
|           status: e.responseStatus, | ||||
|           path: e.name, | ||||
|           url: location.href, | ||||
|           nodeProcess: process.env.NODE_ENV, | ||||
|         } | ||||
|         console.log(api) | ||||
|         // http.post("/node/monitorApi/addOrUpdate", api) | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| export default Observer | ||||
		Reference in New Issue
	
	Block a user