[英]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.