2017-03-06 48 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}); 
相關問題