Logging

by langdonx

HTML

open your console

JavaScript

// define __stack
Object.defineProperty(window, '__stack', {
    get: function(){
        var orig = Error.prepareStackTrace;
        Error.prepareStackTrace = function(_, stack){ return stack; };
        var err = new Error();
        Error.captureStackTrace(err, arguments.callee);
        var stack = err.stack;
        Error.prepareStackTrace = orig;
        return stack;
    }
});

// log function
function log(msg) {
    var d = new Date(),
        pad,
        timeStamp;

    pad = function (d) {
        return d.toString().length == 1 ? '0' + d : d;
    };

    timeStamp = d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate())
                + ' ' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds() + '.' + d.getMilliseconds());

    console.groupCollapsed('%c' + msg, 'font-weight: normal;');
    console.log('from ' + __stack[2].getFileName() + ':' +  __stack[2].getLineNumber());
    console.log('at ' + timeStamp);
    console.groupEnd();
}

(function () {
    // ... lots of code

    log('this statement has been logged');
}());

(function () {
    // ... lots of code
    // ... lots of code
    // ... lots of code
    // ... lots of code
    // ... lots of code

    log('this statement has also been been logged');
}());