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

时间:2014-11-06 10:42:53

标签: javascript node.js debugging logging error-logging

node.js'debug模块确实很整洁。我想知道是否有任何方法可以防止每个模块中这种繁琐和过度冗余的原始化:

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

正如您所看到的那样,它在两个不同的层次上是多余的:我需要在实例化之前“启用”记录器,将相同的名称作为字符串发送两次,然后我需要编写模块名称。有没有办法自动完成这个?

1 个答案:

答案 0 :(得分: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='*';

如果这不能完全回答你的问题,请告诉我。