我想记录所有控制台消息,所以我重新定义了控制台功能,包括log / warn / info / error,如下例所示
var originalError = console.error;
console.error = function () {
//Do something for logging
originalError.apply(console, arguments);
};
但是,我丢失了实际调用console.error()的原始位置:path:line
,因为它现在指向上面代码中的apply()
函数。我怎样才能获得这些信息?
答案 0 :(得分:2)
你做不到。但是,您可以通过在自定义函数中获取错误的.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并获取arguments.callee的堆栈跟踪:
https://github.com/stacktracejs/stacktrace.js#generate-a-stacktrace-from-walking-argumentscallee