重新定义window.console函数时,请保留原始路径位置

Keep the original path location when redefining window.console functions

本文关键字:保留 原始 位置 路径 函数 console 新定义 定义 window      更新时间:2023-09-26

我想记录所有控制台消息,所以我重新定义了控制台功能,包括log/warn/info/error,作为下面的示例

var originalError = console.error;    
console.error = function () {
     //Do something for logging
     originalError.apply(console, arguments);
};

但是,我丢失了console.error()实际调用的原始位置:path:line,因为它现在指向上面代码中的apply()函数。我怎样才能得到这些信息?

你不能那样做。但是,您可以通过在自定义函数中获取错误的.stack属性来模拟它,并将其预先/附加到错误中或单独记录它。

(new Error).stack给出的内容类似于:

"Error
    at <anonymous>:2:5
    at Object.InjectedScript._evaluateOn (<anonymous>:875:140)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:808:34)
    at Object.InjectedScript.evaluate (<anonymous>:664:21)"

对于非错误,请使用Stacktrace.js并获取参数的堆栈跟踪。集合:

https://github.com/stacktracejs/stacktrace.js#generate-a-stacktrace-from-walking-arguments称为