Get console shell for log message on correct line

I created a wrapper for console logging. I could not get it to display the log number from which the wrapper function is being called. I looked at other posts to handle this, but I can't figure out what they mentioned. They basically bound console.log to an external function, but I need to do other work internally before using it.

Is this possible with my setup?

Free JsFiddle Error

var logger = (function (window, console) {

    // logger object
    function logger() {

        // use to initialize the logger
        function init() {
            fixConsole();
        }

        // fix missing console
        function fixConsole() {
            var logmethod;
            var noop = function () { };
            var logmethods = [
                'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
                'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
                'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
                'timeStamp', 'trace', 'warn'
            ];

            var length = logmethods.length;
            console = (window.console = window.console || {});

            while (length--) {
                logmethod = logmethods[length];

                // Only stub undefined methods.
                if (!console[logmethod]) {
                    console[logmethod] = noop;
                }
            }
        }

        // initializing the logger
        init();
    }

    // logging methods
    logger.prototype = {
        info: function (msg, title) {
            
            if (title)
                console.log(title + ": " + msg);
            else
                console.log(msg);
        }
    }

    // create logger
    function _create() {

        // create logger
        var log = new logger();

        // return logger
        return log;
    }

    // exposed functions
    return {
        create: _create
    }

})(window, console);

var log = logger.create();

log.info('Hello, I am trying to get the logger to log under the line number info is used on.');





log.info('For instance I want line number 75 to show.');
<h1> Press F12 and look at the console to see</h1>
Run code
0
source share
2 answers

To be precise from what I did to get the error number, including the regular expression needed to capture it.

        var err = getErrorObject();
        var caller_line = err.stack.split("\n")[4];
        var index = caller_line.indexOf("at ");
        var clean = caller_line.slice(index+2, caller_line.length);
        var number = clean.match(/(?!:)\d*(?=\:)/g);
        console.log(number[0]);
0
source

, .

, , , .

console.trace().

// 2016-6-24

, , - , , .

, - - , , ( , .bind).

, , console.log, req. ( )

, , .

export default function logFactory() {
  return (req, res, next) => {
    function getLogger(type = 'log', ...args) {
      let user = 'unknown';
      try {
        user = req.session.cas.user;
      } catch (e) {
      }

      if (!console[type]) {
        console.error('invalid console type', type);
      }

      return console[type].bind(console[type], `${req.sn}|${user}|${req.ip}|`, ...args);
    }

    req.getLogger = getLogger;

    req.log = {
      debug: getLogger('log'),
      info: getLogger('log'),
      log: getLogger('log'),
      warn: getLogger('warn'),
      error: getLogger('error')
    };
  }
}

console.log , req.log.info('Any business infos here').

, winston.

2016-06-24 17:47:52|4497|DEBUG|RequestUtils.js:256|0e84f1c3-d5b7-4578-9b83-f03fe9951fb1| unknown| 10.240.138.19| Receiving response from POST /statics/add_pv_uv?portal_auth_key=af27c0bc-cc04-4821-a4de-cbb93c0ed19f  200  60ms.
0

All Articles