我正在尝试拦截console.log并将其写入数组以编程方式访问日志。这应该是跨浏览器兼容的。
window["log"]=[];
var logger = console.log;
console.log = function() {
window["log"].push({arguments});
// neither seems to output as original
logger( arguments );
logger.call ( arguments );
logger.call ( console, arguments );
logger.apply ( arguments );
}
我的问题是logger( arguments)
总是将数组写入控制台而不是原始消息。如何使用原始行号和文件使控制台输出原始消息?
答案 0 :(得分:2)
您正在寻找:
logger.apply(console, arguments);
...调用原始函数,this
设置为console
,arguments
分散为离散参数。
附注:如果您希望广泛兼容,则需要在此处替换ES2015 +代码:
window["log"].push({arguments});
与ES5兼容的代码:
window["log"].push({arguments: arguments});