场景:假设我有多种方法执行不同的任务并由不同的开发人员处理。我正在尝试进行一个通用方法调用,如果发生错误,它会记录下来。所以我需要记录行号、方法名称等。
我写了一个泛型函数,如下:
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 中的任何方式获取方法名称和行无引用?
最佳答案
我们在应用程序记录器中使用了一个很好的模块。您甚至可以获取行号。 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
关于javascript - 如何在方法 node.js 中获取方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712847/