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

标签 javascript node.js

场景:假设我有多种方法执行不同的任务并由不同的开发人员处理。我正在尝试进行一个通用方法调用,如果发生错误,它会记录下来。所以我需要记录行号、方法名称等。

我写了一个泛型函数,如下:

  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/

相关文章:

java - 数据包从 Game Maker 到 Node,js 不分离

php - 如何将 JavaScript 添加到 WordPress PHP 文件?

javascript - 用javascript中的单个反斜杠替换?

node.js - MEAN 堆栈 CRUD 更新 404 错误

javascript - 如何将 promise 的返回值分配给对象键?

WebStorm 中的 JavaScript 代码样式显示未终止语句警告

javascript - 无法从外部 IP 访问 Node.js

javascript - JQuery 算术变量被视为字符串

javascript - 更改为服务器端时如何获取标签文本?

JavaScript 定义然后调用语法