I want to access console.log data programmatically and so I need to implement a console.log which stores its data in a global variable or file.
Can anyone tell me how to do this?
I want to access console.log data programmatically and so I need to implement a console.log which stores its data in a global variable or file.
Can anyone tell me how to do this?
EDIT 2
Do use a library like loglevel
See the answers below to understand how you can implement something like this by yourself.
original answer:
Do something like:
var myLogs = [];
(function () {
var log = console.log;
console.log = function () {
var args = Array.prototype.slice.call(arguments)
log.apply(this, args );
myLogs.push(args);
};
}());
The gloabl variable myLogs will contain your log data.
You may want to adopt the code to your needs. Maybe you want to make one string out of the args array.
EDIT
If you want to have console.log, console.error, console.warn, console.info and store the log level:
var logData = [];
(function () {
var log = console.log,
error = console.error,
warn = console.warn,
info = console.info;
console.log = function () {
var args = Array.prototype.slice.call(arguments)
log.apply(this, args );
logData.push({level: "log", arguments: args});
};
console.error = function () {
var args = Array.prototype.slice.call(arguments)
error.apply(this, args );
logData.push({level: "error", arguments: args});
};
console.warn = function () {
var args = Array.prototype.slice.call(arguments)
warn.apply(this, args );
logData.push({level: "warn", arguments: args});
};
console.info = function () {
var args = Array.prototype.slice.call(arguments)
info.apply(this, args );
logData.push({level: "info", arguments: args});
};
}());
level.throw new Error("error") then this does not end up in this log. In your question you did only ask about how to collect data from calling console.log.