2012-11-27 54 views
6

我正在努力增強某些node.js應用程序中的日誌記錄。過去曾使用C++的__ file__和__ line __預處理器宏來幫助我們在記錄事件時追蹤問題。我在node.js世界中沒有發現任何類似的東西。node.js是否有像__file__和__line__之類的C++預處理器宏?

有沒有人有建議或知道如何在node.js中獲取行號和文件名以進行記錄?

我在尋找類似:

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

回答

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的吸氣劑,但我想保持相似。

2

只需使用C preprocesor,增加了額外的構建步驟到您的代碼,但隨後它允許剝出你的日誌記錄生產代碼。

+1

不是一個壞主意。從來沒有想過這個。 –

4

擴大在以前的答案有點到這裏:https://gist.github.com/gavinengel/8572856

允許設置全局:__line,__FILE,__ext,__dir

順便說一句,我該怎麼辦?:創建__function,__method,__CLASS

+0

感謝您的要求。你應該考慮把它做成節點模塊,它可能是一個很好的npm模塊 – jeremy

+0

當然。其實,我建議你查看一下我剛剛意識到的PHPJS團隊的代碼:https://github.com/kvz/phpjs/tree/master/experimental/language – Gavin

+4

我繼續做了一個npm :HTTPS://www.npmjs.com/package/magic-globals – Gavin