I\'d like to know if there is a way in javascript to retrieve console history.
What I mean by console history is what appears in the dev tools console. For instance,
Chrome extensions had an API for that, experimental.devtools.console:
chrome.experimental.devtools.console.getMessages(function(messages) { })
This API has been removed.
I wrote a simple cross-browser library for this, called console.history
. It's available on GitHub:
https://git.io/console
What the library basically does is catch all calls to console.[log/warn/error/debug/info]
and store them in the console.history
array. As a bonus, a full stack trace is also added.
Test file test.js
contains:
function outer() {
inner();
}
function inner() {
var array = [1,2,3];
var object = {"foo": "bar", "key": "value"};
console.warn("Something went wrong, but we're okay!", array, object);
}
outer();
The entry to console.history
will be:
{
"type": "warn",
"timestamp": "Thu, 01 Sep 2016 15:38:28 GMT",
"arguments": {
"0": "Something went wrong, but we're okay!",
"1": [1, 2, 3],
"2": {
"foo": "bar",
"key": "value"
}
},
"stack": {
"0": "at inner (http://localhost:1337/test/test.js:6:11)",
"1": "at outer (http://localhost:1337/test/test.js:2:3)",
"2": "at http://localhost:1337/test/test.js:9:1"
}
}
There is no way to get the console data with JavaScript. Only way you would be able to do it is basically hijack all the console functions and store a copy and than call the default log lines.
console.history = [];
var oldConsole = {};
for (var i in console) {
if (typeof console[i] == 'function') {
oldConsole[i] = console[i];
var strr = '(function(){\
console.history.push({func:\'' + i + '\',args : Array.prototype.slice.call(arguments)});\
oldConsole[\'' + i + '\'].apply(console, arguments);\
})';
console[i] = eval(strr);
}
}
And then use console.history to access history