Get name and line of calling function in node.js

后端 未结 5 798
陌清茗
陌清茗 2020-12-07 08:50

How can one get the name and line of a function that called the current one? I would like to have a rudimentary debugging function like this (with npmlog defining log.

5条回答
  •  执笔经年
    2020-12-07 09:25

    I also had similar requirement. I used stack property of Error class provided by nodejs.
    I am still learning node so, there may be the chances of error.

    Below is the explanation for the same. Also created npm module for the same, if you like, you can check at:
    1. npm module 'logat'
    2. git repo

    suppose we 'logger' object with method 'log'

    var logger = {
     log: log
    }
    function log(msg){
      let logLineDetails = ((new Error().stack).split("at ")[3]).trim();
      console.log('DEBUG', new Date().toUTCString(), logLineDetails, msg);
    }
    

    Example:

    //suppose file name: /home/vikash/example/age.js
    function getAge(age) {
        logger.log('Inside getAge function');    //suppose line no: 9
    }
    

    Output of above Example:

        DEBUG on Sat, 24 Sept 2016 12:12:10 GMT at getAge(/home/vikash/example/age.js:9:12)
        Inside getAge function
    

提交回复
热议问题