2017-07-30 74 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