window.conf = {
traceid: "",
errorList: [],
timeList: {
httpts: [],
},
};
console.log("log/jsError");
let errordefo = {
t: "",
errMsg: "",
errMsg2: "",
};
function _error() {
setTimeout(() => {
window.logp.reportLog2 = debounce(window.logp.reportLog, 5000);
}, 0);
window.addEventListener(
"error",
function (e) {
let defaults = Object.assign({}, errordefo);
setTimeout(() => {
if ("error" in e) {
defaults.error = e.error;
defaults.error = e.error;
defaults.errMsg = e.error && e.error.stack;
defaults.filename = e.filename;
defaults.message = e.message;
defaults.line = e.lineno;
defaults.href = e.target.location.href;
} else {
defaults.n = "resource";
defaults.errMsg = e.target.localName + " is load error";
defaults.resourceUrl = e.target.href || e.target.currentSrc || e.target.src;
defaults.href = e.target.baseURI;
}
defaults.type = e.type;
defaults.t = Date.now();
defaults.func = "addEventListener-error";
window.conf.errorList.push(defaults);
window.logp.reportLog2(2, window.conf.errorList);
}, 0);
},
true
);
window.onerror = function (errMsg, _url, line, col, error) {
let defaults = Object.assign({}, errordefo);
setTimeout(function () {
defaults.func = "window.onerror";
defaults.resourceUrl = _url;
defaults.error = error;
defaults.errMsg = error && error.stack ? error.stack.toString() : errMsg;
defaults.line = line;
defaults.col = col || (window.event && window.event.errorCharacter) || 0;
defaults.t = Date.now();
window.conf.errorList.push(defaults);
window.logp.reportLog2(2, window.conf.errorList);
}, 0);
};
function getInfo(reason) {
console.log("getInfo===reason", reason);
const error = reason;
const msg = (error && error.message && error.message) || "";
const stack = (error && error.stack) || "";
let resourceUrl, col, line;
let errs = stack.match(/\(.+?\)/);
if (errs && errs.length) errs = errs[0];
errs = errs.replace(/\w.+[js|html]/g, ($1) => {
resourceUrl = $1;
return "";
});
errs = errs.split(":");
if (errs && errs.length > 1) line = parseInt(errs[1] || 0);
col = parseInt(errs[2] || 0);
return {
resourceUrl,
col,
line,
msg,
};
}
window.addEventListener("unhandledrejection", function (e) {
console.log("unhandledrejection---->", e);
e.preventDefault();
let defaults = Object.assign({}, errordefo);
setTimeout(() => {
if ("reason" in e) {
if (e.reason.message) {
defaults.errMsg = e.reason.message;
}
if (e.reason.stack) {
defaults.stack = e.reason.stack;
}
}
defaults.href = e.target.location.href;
defaults.type = e.type;
defaults.func = "unhandledrejection";
defaults.t = Date.now();
window.conf.errorList.push(defaults);
window.logp.reportLog2(2, window.conf.errorList);
}, 0);
});
const oldError = console.error;
console.error = function (e) {
let defaults = Object.assign({}, errordefo);
setTimeout(function () {
defaults.errMsg = e;
defaults.func = "console.error";
defaults.method = "GET";
defaults.t = new Date().getTime();
defaults.data = location.href;
window.conf.errorList.push(defaults);
window.logp.reportLog2(2, window.conf.errorList);
}, 0);
return oldError.apply(console, arguments);
};
const oldLog = console.log;
console.log = function (e, p, g) {
let defaults = Object.assign({}, errordefo);
setTimeout(function () {
e = typeof e == "String" ? e : JSON.stringify(e);
p = p ? (typeof p == "String" ? p : JSON.stringify(p) : "";
g = p ? (typeof g == "String" ? p : JSON.stringify(g) : "";
defaults.errMsg = e + p + g;
defaults.func = "console.log";
defaults.t = Date.now();
defaults.href = location.href;
window.conf.errorList.push(defaults);
}, 0);
return oldLog.apply(console, arguments);
};
}
const debounce = function (func, wait) {
let willdo = false;
return function () {
const _this = this;
const args = arguments;
if (!willdo) {
willdo = true;
setTimeout(function () {
willdo = false;
func.apply(_this, args);
}, wait);
}
};
};
export { _error };