26

I'm trying to get the console.log as string in pure JavaScript. My input is a script, which I'm not familiar with, and I want to collect all the messages in the console.log into a string.

For example:

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

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

alert(doSomething());

JSFiddle link

Note that I do not need to alert the log - this is just a simple example of testing the functionality. I'll have to do some operations on the log's content.

Itay Gal
  • 10,706
  • 6
  • 36
  • 75

2 Answers2

28

You could overwrite console.log method before using it:

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

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

Using apply and arguments preserves the correct console.log behaviour, i.e. you can add multiple log messages with a single call.

It will push all new console.log messages to logMessages array.

Audrius Lubys
  • 626
  • 6
  • 7
0

for security issues, there is no api to read the history of console.log().

Raskul
  • 1,674
  • 10
  • 26