JSFiddle - React, Tailwind, and code Playground
JavaScript
// 1. open up developer tools
// 2. see log output
// 3. click on the line number to see that the line number points at caller
// logger method 1: allows for fully functional log-wrapping without losing context,
// but, it is very ugly from the caller's perspective.
var debug = function () {
// do my extra special stuff
window.console.log("logging to server 1: ", arguments);
// do regular console logging, if possible
if (window.console && window.console.log) {
return window.console.log.apply.bind(window.console.log, window.console, arguments);
} else {
return function () {};
}
};
// caller
debug("logger method", 1)();
// logger method 2: pretty calling, but you don't know what was logged,
// just that something definitely was.
var Logger = {};
Logger.__defineGetter__("debug", function () {
// do my extra special stuff
window.console.log("logging to server 2: don't know what was logged");
// do regular console logging, if possible
if (window.console && window.console.log) {
return console.log.bind(window.console);
} else {
return function () {};
}
});
// caller
Logger.debug("logger method", 2);