簡體   English   中英

如何在方法node.js中獲取方法名稱

[英]How to get a method name inside a method 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();

從您想要的任何地方,始終得到正確的結果

編輯:另一個提示。 沒有硬編碼你的文件名是node.js中最容易實現的,沒有第三方模塊依賴:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM