Javascript 重新定义window.console函数时保留原始路径位置
我想记录所有控制台消息,因此我重新定义了控制台函数,包括log/warn/info/error,如下例所示Javascript 重新定义window.console函数时保留原始路径位置,javascript,console,instrumentation,Javascript,Console,Instrumentation,我想记录所有控制台消息,因此我重新定义了控制台函数,包括log/warn/info/error,如下例所示 var originalError = console.error; console.error = function () { //Do something for logging originalError.apply(console, arguments); }; 但是,我丢失了实际调用console.error()的原始位置:path:line,因为它
var originalError = console.error;
console.error = function () {
//Do something for logging
originalError.apply(console, arguments);
};
但是,我丢失了实际调用console.error()的原始位置:
path:line
,因为它现在指向上面代码中的apply()
函数。我怎样才能得到这些信息?你不能那样做。但是,您可以通过在自定义函数中获取错误的.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)"
“错误
在谢谢。但问题是只有可丢弃的错误才有堆栈跟踪。我的目的是重新定义控制台日志/info/warn/error函数来做一些额外的工作,而且它们肯定没有堆栈跟踪。使用stacktrace.js从参数获取堆栈跟踪。被调用方
使用stacktrace.js:这是stacktrace.js中遍历参数的一小部分ts.callee
chain:-您不需要全部内容:)