如何覆盖/拦截console.log并将原始日志输出到控制台

时间:2017-03-06 12:05:38

标签: javascript arguments console.log

我正在尝试拦截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)总是将数组写入控制台而不是原始消息。如何使用原始行号和文件使控制台输出原始消息?

1 个答案:

答案 0 :(得分:2)

您正在寻找:

logger.apply(console, arguments);

...调用原始函数,this设置为consolearguments分散为离散参数。

附注:如果您希望广泛兼容,则需要在此处替换ES2015 +代码:

window["log"].push({arguments});

与ES5兼容的代码:

window["log"].push({arguments: arguments});