2014-06-05 4 views
8

Sto cercando di ottenere console.log come stringa in puro JavaScript. Il mio input è uno script che non conosco e desidero raccogliere tutti i messaggi in console.log in una stringa.Come ottenere il contenuto di console.log come stringa in JavaScript

Ad esempio:

function doSomething(){ 
    console.log("start"); 
    console.log("end"); 
    var consoleLog = getConsoleLog(); 
    return consoleLog; 
} 

function getConsoleLog(){ 
    // How to implement this? 
} 

alert(doSomething()); 

JSFiddle link

Si noti che non ho bisogno di allertare il registro - questo è solo un semplice esempio di testare la funzionalità. Dovrò fare alcune operazioni sul contenuto del registro.

risposta

13

Si potrebbe sovrascrivere console.log metodo prima di utilizzarlo:

var logBackup = console.log; 
var logMessages = []; 

console.log = function() { 
    logMessages.push.apply(logMessages, arguments); 
    logBackup.apply(console, arguments); 
}; 

Utilizzando apply e arguments conserva il corretto console.log comportamento, ossia è possibile aggiungere più messaggi di registro con una sola chiamata.

Spingerà tutti i nuovi messaggi console.log nell'array logMessages.

+0

Questo genera un errore "InternalError: too recurrion" per me. –