我正在为记录器编写一个模块,我希望每次使用调用该函数的文件的文件名调用函数dlog()
时添加一个前缀。现在我每次都要这样打电话:
dlog(__filename + " log text");
有没有办法检测调用该函数的文件的名称?
答案 0 :(得分:2)
来自Nodejs: get filename of caller function:
function _getCallerFile() {
try {
var err = new Error();
var callerfile;
var currentfile;
Error.prepareStackTrace = function (err, stack) { return stack; };
currentfile = err.stack.shift().getFileName();
while (err.stack.length) {
callerfile = err.stack.shift().getFileName();
if(currentfile !== callerfile) return callerfile;
}
} catch (err) {}
return undefined;
}