13

我正在努力增强某些 node.js 应用程序的日志记录。过去曾使用 C++ 的 __file__ 和 __line __ 预处理器宏来帮助我们在记录事件时跟踪问题。我在 node.js 世界中没有发现任何类似的东西。

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

我正在寻找类似的东西:

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

4 回答 4

16

查看全局对象

__filename 

对于 lineNumber,请参阅这篇文章:javascript node.js getting line number in try catch?

于 2012-11-27T20:20:51.543 回答
9

请参阅:访问 V8 JavaScript 中的行号(Chrome 和 Node.js)

然后对于文件名:

Object.defineProperty(global, '__file', {
  get: function(){
    return __stack[1].getFileName().split('/').slice(-1)[0];
  }
});

您也可以只使用process.argv[1]而不是调用__stackgetter,但我想保持相似。

于 2012-11-27T20:15:15.837 回答
4

将先前的答案扩展到此处:https ://gist.github.com/gavinengel/8572856

允许设置全局变量:__line、__file、__ext、__dir

顺便问一下,我如何创建?:__function,__method,__class

于 2014-01-23T04:32:48.510 回答
2

只需使用 C 预处理器,在您的代码中添加一个额外的构建步骤,然后它允许剥离您的日志记录以用于生产代码。

于 2013-02-26T16:36:24.460 回答