2014-11-06 29 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='*'; 

讓我知道如果這並不能完全回答你的問題。