2017-03-06 77 views
0

我试图拦截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)始终写入阵列安慰,而不是原始邮件。如何使控制台输出带有原始行号和文件的原始消息?

回答

2

您正在寻找:

logger.apply(console, arguments); 

...这就要求与this一整套原始功能consolearguments展开离散参数。


附注:如果你想成为广泛兼容,你需要在这里更换ES2015 +代码:

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

与ES5兼容的代码:

window["log"].push({arguments: arguments}); 
相关问题