node.js是否像c ++预处理器宏一样有__file__和__line__之类的东西?

时间:2012-11-27 19:41:10

标签: node.js

我正在努力增强某些node.js应用程序的日志记录。过去曾使用C ++的__ file__和__ line __预处理器宏来帮助我们在记录事件时追踪问题。我在node.js世界中找不到类似的东西。

是否有人有建议或知道如何在node.js中获取行号和文件名以进行日志记录?

我正在寻找类似的东西:

console.log(__FILE__ + "." + __LINE__ + "\t" + new Date().toISOString() + " Message ");

4 个答案:

答案 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预处理器,为您的代码添加额外的构建步骤,但随后它允许删除生产代码的日志记录。