node.js的debugging模块:如何避免这种繁琐的初始化?

node.jsdebug模块确实整洁。 我想知道是否有任何方法可以防止在每个模块中这种乏味和过度冗余的初始化:

 require('debug').enable('module-name:log module-name:ERROR'); var log = require('debug')('module-name:log'); var error = require('debug')('module-name:ERROR'); 

正如你所看到的,它在两个不同的层次上是冗余的:我需要在实例化它们之前“启用”logging器,发送两次相同的名称作为string,并且我需要写出模块名称。 有没有办法做到这一点automagically?

几个月前,我偶然发现了同样的问题,因为我找不到任何我创builddebugginglogging器的解决scheme。 debug-logger是一个关于visionmedia / debug的包装,它将为您提供不同级别/命名空间的日志logging方法。 例如:

 var log = require('debug-logger')('myapp'); log.trace("I'm a trace output"); log.debug("I'm a debug output"); log.log("I'm a log output"); log.info("I'm an info output"); log.warn("I'm a warn output"); log.error("I'm an error output"); 

将打印:

 myapp:trace I'm a trace output +0ms myapp:debug I'm a debug output +2ms myapp:log I'm a log output +0ms myapp:info I'm an info output +0ms myapp:warn I'm a warn output +1ms myapp:error I'm an error output +0ms 

以适当的颜色。 它也是非常可configuration的。

这应该解决你的第二个问题。 对于第一个问题,在实例化debug / debug-logger ,可以使用环境variablesDEBUG,例如:

 export DEBUG=* 

这将启用所有日志级别/名称空间。 或者,如果你想在节点内部做到这一点:

 process.env.DEBUG='*'; 

让我知道如果这不能完全回答你的问题。