This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/skywalking-client-js.git
commit b15e9791021e2eb4f48ae279abb8ff6f5758f0a7 Author: Qiuxia Fan <fine0...@outlook.com> AuthorDate: Wed Jan 8 12:33:33 2020 +0800 refactor: data structure --- src/errors/ajax.ts | 6 ++++-- src/errors/js.ts | 5 +++-- src/errors/promise.ts | 5 +++-- src/monitor.ts | 8 ++++---- src/services/base.ts | 17 +++++++++++------ src/services/types.d.ts | 3 +-- src/types.d.ts | 2 +- 7 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/errors/ajax.ts b/src/errors/ajax.ts index 6143fe2..e0d0616 100644 --- a/src/errors/ajax.ts +++ b/src/errors/ajax.ts @@ -19,16 +19,18 @@ import Base from '../services/base'; import { GradeTypeEnum, ErrorsCategory } from '../services/constant'; class AjaxErrors extends Base { - public handleError(options: {reportUrl: string}) { + public handleError(options: {reportUrl: string; serviceName: string}) { if (!window.XMLHttpRequest) { return; } + this.reportUrl = options.reportUrl; + this.serviceName = options.serviceName; + const xhrSend = XMLHttpRequest.prototype.send; const xhrEvent = (event: any) => { try { if (event && event.currentTarget && event.currentTarget.status !== 200) { this.logInfo = { - reportUrl: options.reportUrl, category: ErrorsCategory.AJAX_ERROR, grade: GradeTypeEnum.ERROR, errorUrl: event.target.responseURL, diff --git a/src/errors/js.ts b/src/errors/js.ts index 121d19f..e6b81f8 100644 --- a/src/errors/js.ts +++ b/src/errors/js.ts @@ -19,10 +19,11 @@ import Base from '../services/base'; import { GradeTypeEnum, ErrorsCategory } from '../services/constant'; class JSErrors extends Base { - public handleErrors(options: {reportUrl: string}) { + public handleErrors(options: {reportUrl: string; serviceName: string}) { window.onerror = (message, url, line, col, error) => { + this.reportUrl = options.reportUrl; + this.serviceName = options.serviceName; this.logInfo = { - reportUrl: options.reportUrl, category: ErrorsCategory.JS_ERROR, grade: GradeTypeEnum.ERROR, errorUrl: url, diff --git a/src/errors/promise.ts b/src/errors/promise.ts index 8767510..01d2209 100644 --- a/src/errors/promise.ts +++ b/src/errors/promise.ts @@ -19,18 +19,19 @@ import Base from '../services/base'; import { GradeTypeEnum, ErrorsCategory } from '../services/constant'; class PromiseErrors extends Base { - public handleErrors(options: {reportUrl: string}) { + public handleErrors(options: {reportUrl: string; serviceName: string}) { window.addEventListener('unhandledrejection', (event) => { try { let url = ''; if (!event || !event.reason) { return; } + this.reportUrl = options.reportUrl; + this.serviceName = options.serviceName; if (event.reason.config && event.reason.config.url) { url = event.reason.config.url; } this.logInfo = { - reportUrl: options.reportUrl, category: ErrorsCategory.PROMISE_ERROR, grade: GradeTypeEnum.ERROR, errorUrl: url, diff --git a/src/monitor.ts b/src/monitor.ts index 582f1b4..a164606 100644 --- a/src/monitor.ts +++ b/src/monitor.ts @@ -30,23 +30,23 @@ const ClientMonitor = { } as CustomOptionsType, register(options: CustomOptionsType) { - const reportUrl = options.reportUrl; + const { serviceName, reportUrl } = options; this.customOptions = options; if (this.customOptions.jsErrors) { this.customOptions.jsErrors = options.jsErrors; - JSErrors.handleErrors({reportUrl}); + JSErrors.handleErrors({reportUrl, serviceName}); } if (this.customOptions.promiseErrors) { this.customOptions.promiseErrors = options.promiseErrors || this.customOptions.promiseErrors; - PromiseErrors.handleErrors({reportUrl}); + PromiseErrors.handleErrors({reportUrl, serviceName}); } if (this.customOptions.resourceErrors) { this.customOptions.resourceErrors = options.resourceErrors; } if (this.customOptions.ajaxErrors) { this.customOptions.ajaxErrors = options.ajaxErrors || this.customOptions.ajaxErrors; - AjaxErrors.handleError({reportUrl}); + AjaxErrors.handleError({reportUrl, serviceName}); } }, }; diff --git a/src/services/base.ts b/src/services/base.ts index a8b0c6f..fa655c9 100644 --- a/src/services/base.ts +++ b/src/services/base.ts @@ -19,7 +19,9 @@ import { ErrorsCategory, GradeTypeEnum } from './constant'; import { errorInfoFeilds } from './types'; export default class Base { - public logInfo: errorInfoFeilds & {reportUrl: string} = { + public reportUrl: string; + public serviceName: string; + public logInfo: errorInfoFeilds = { category: ErrorsCategory.UNKNOW_ERROR, grade: GradeTypeEnum.INFO, errorUrl: '', @@ -27,7 +29,6 @@ export default class Base { col: 0, errorInfo: '', message: '', - reportUrl: '', }; public traceInfo() { @@ -42,13 +43,13 @@ export default class Base { if (!this.logInfo.message) { return; } - if (this.logInfo.reportUrl && this.logInfo.errorUrl && - this.logInfo.errorUrl.toLowerCase().includes(this.logInfo.reportUrl.toLowerCase())) { + if (this.reportUrl && this.logInfo.errorUrl && + this.logInfo.errorUrl.toLowerCase().includes(this.reportUrl.toLowerCase())) { return; } const errorInfo = this.handleErrorInfo(); - Task.addTask(this.logInfo.reportUrl, errorInfo); + Task.addTask(this.reportUrl, errorInfo); } catch (error) { // console.log(error); @@ -73,6 +74,10 @@ export default class Base { ...this.logInfo, message, }; - return recordInfo; + return { + errorLogs: recordInfo, + serviceName: this.serviceName, + reportUrl: this.reportUrl, + }; } } diff --git a/src/services/types.d.ts b/src/services/types.d.ts index b027d5e..f1ae5a6 100644 --- a/src/services/types.d.ts +++ b/src/services/types.d.ts @@ -15,8 +15,7 @@ * limitations under the License. */ export interface TraceFields { - reportUrl: string; - serviceName?: string; + serviceName: string; errorInfo: errorInfoFeilds; performanceInfo?: performanceInfoFields; resources?: any; diff --git a/src/types.d.ts b/src/types.d.ts index 0d6b2c3..e916ee6 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -17,7 +17,7 @@ export interface CustomOptionsType { reportUrl: string; - modulesName?: string; + serviceName?: string; jsErrors: boolean; promiseErrors: boolean; consoleErrors: boolean;