我正在努力增强某些node.js应用程序的日志记录。过去曾使用C ++的__ file__和__ line __预处理器宏来帮助我们在记录事件时追踪问题。我在node.js世界中找不到类似的东西。
是否有人有建议或知道如何在node.js中获取行号和文件名以进行日志记录?
我正在寻找类似的东西:
console.log(__FILE__ + "." + __LINE__ + "\t" + new Date().toISOString() + " Message ");
答案 0 :(得分:14)
请参阅global object:
__filename
对于lineNumber的,请参阅此帖子:javascript node.js getting line number in try catch?
答案 1 :(得分:7)
请参阅:Accessing line number in V8 JavaScript (Chrome & Node.js)
然后是文件名:
Object.defineProperty(global, '__file', {
get: function(){
return __stack[1].getFileName().split('/').slice(-1)[0];
}
});
您也可以使用process.argv[1]
而不是调用__stack
getter,但我希望保持相似。
答案 2 :(得分:4)
在此处扩展了之前的答案:https://gist.github.com/gavinengel/8572856
允许设置全局变量:__ line,__ file,__ ext,__ dir
顺便说一下,如何创建?:__ function,__ method,__ class
答案 3 :(得分:2)
只需使用C预处理器,为您的代码添加额外的构建步骤,但随后它允许删除生产代码的日志记录。