【问题标题】:Does node.js have anything like __file__ and __line__ like the c++ preprocessor macros?node.js 是否有像 c++ 预处理器宏这样的 __file__ 和 __line__ 之类的东西?
【发布时间】:2012-11-15 12:28:31
【问题描述】:

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

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

我正在寻找类似的东西:

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

【问题讨论】:

    标签: node.js


    【解决方案1】:

    见: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】:

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 不错的主意。从来没想过。
        • 听起来不错,但究竟如何“只使用 C 预处理器”?
        【解决方案4】:

        将之前的答案稍微扩展至此处:https://gist.github.com/gavinengel/8572856

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

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

        【讨论】:

        猜你喜欢
        • 2013-01-15
        • 2013-10-21
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        相关资源
        最近更新 更多