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?
Share Improve this question edited May 29, 2017 at 20:12 Badacadabra 8,5357 gold badges31 silver badges54 bronze badges asked Feb 3, 2015 at 6:01 Query21Query21 2002 silver badges10 bronze badges 1- You want a logger kind of stuff? Also have a look @ Log Level - Minimal lightweight simple logging for JavaScript. loglevel replaces console.log() and friends with level-based logging and filtering, with none of console's downsides. – Shubh Commented Feb 3, 2015 at 6:07
1 Answer
Reset to default 5EDIT 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});
};
}());