2014-11-06 78 views
2

node.js'debug模块确实整洁。我想知道是否有什么办法可以防止各个模块在这个繁琐,过于冗余inizialization:node.js的调试模块:如何避免这种繁琐的初始化?

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

正如你可以看到它是多余的在两个不同的层次:我需要“启用”实例之前的记录器,发送两次相同的名称作为字符串,我需要编写模块名称。有没有办法做到这一点automagically?

回答

2

几个月前,我偶然发现了同样的问题,因为我找不到任何解决方案,我创建了debug-logger。 debug-logger是一个关于visionmedia/debug的包装,它将为您提供在不同级别/名称空间上登录的方法。例如:

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 

在适当的颜色。它也是非常可配置的。

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

export DEBUG=* 

这将使所有的日志级别/命名空间。或者,如果你想在节点内部做:

process.env.DEBUG='*'; 

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

相关问题