2017-07-30 75 views
0
捕獲調試輸出

我需要捕獲調試信息,而我做一個要求調用來找出爲什麼找不到一些包。node.js - 從模塊

模塊(內部module.js)有幾個調試調用如:

if (parent) { 
     debug('looking for %j in %j', id, paths); 
    } 

什麼我需要做的捕捉到這一調試信息?

感謝

回答

2

debug()爲利用util.debuglog()創建的函數,這意味着,如果設置正確的環境變量,調試消息將被寫入stderr,然後你就可以捕捉到一個文件中(例如):

env NODE_DEBUG=module node your-app.js 2> debug.log 

編輯:從您自己的應用程序中捕獲這些消息,我認爲你必須採取的monkeypatching,例如console.error()

let error = console.error.bind(console); 
console.error = function() { 
    if (arguments[1] !== 'MODULE') { 
    return error.apply(this, arguments); 
    } 
    console.log('error log', arguments); 
}; 

此代碼之前需要任何想要跟蹤require()語句來運行,並且它不是很強勁(如果util.debuglog實施都沒有改變,它可能會破壞)。

+0

謝謝。是否有可能在node.js應用程序中捕獲stderr? – wmmhihaa

+1

@wmmhihaa見編輯。 – robertklep