如何在方法node.js中获取方法名称

场景 :考虑我有多个方法执行不同的任务,并由不同的开发人员处理。 我想做一个通用的方法调用,如果发生错误logging。 所以需要的是我必须logging一个行号,方法名称等。

我写了一个通用函数,如下所示:

function enterLog(sourcefile, methodName, LineNo) { fs.appendFile('errlog.txt', sourcefile +'\t'+ methodName +'\t'+ LineNo +'\n', function(e){ if(e) console.log('Error Logger Failed in Appending File! ' + e); }); } 

因此,上述方法的调用必须传递源文件,方法名称和行号,这些行号在开发过程中可能随时改变。

例如,调用具有硬编码值的方法:

 enterLog('hardcodedFileName.js', 'TestMethod()', '27'); 

问题 :是否更好的硬编码值(如上面的例子)所需要的或者有什么办法得到的方法名称和线没有任何参考从Node.js?

我们在应用程序logging器中使用了一个很好的模块。 你甚至可以获取行号。 https://npmjs.org/package/traceback

所以你可以重写它:

 var traceback = require('traceback'); function enterLog(sourcefile, methodName, LineNo) { var tb = traceback()[1]; // 1 because 0 should be your enterLog-Function itself fs.appendFile('errlog.txt', tb.file +'\t'+ tb.method +'\t'+ tb.line +'\n', function(e) { if(e) { console.log('Error Logger Failed in Appending File! ' + e); } }); } 

只要打电话:

 enterLog(); 

从任何你想要的地方,总是得到正确的结果

编辑:另一个提示。 不要硬编码你的文件名是在没有3rd-party-module-dependencies的node.js中最容易实现的:

 var path = require('path'); var currentFile = path.basename(__filename); // where __filename always has the absolute path of the current file