數(shù)以百萬計的項目包依賴于非常流行的 debug
包。提供的 debug
方法使 Node.js 開發(fā)人員能夠控制日志消息傳遞赖草。與常使用的 console.log
相反赦邻,使用 debug
的消息在默認情況下是隱藏的臂聋。
debug
日志消息被綁定到一個模塊名趴俘,只有當 debug
環(huán)境變量列出特定模塊名時才會出現(xiàn)。
// 只有當設(shè)置 DEBUG=http 時記錄消息
const debug = require('debug')('http')
debug('booting %o', name)
util.debuglog
—原生的 debug
備選方案
Node.js 內(nèi)置了類似的功能。util.debuglog
方法提供了幾乎相同的功能通贞。
讓我們看一個示例:
// index.js
const util = require('util')
const debuglog = util.debuglog('app')
debuglog('hello from my debugger [%d]', 123)
在終端中運行此代碼時,將不會看到任何日志消息恼五。但是昌罩,當您定義在 app
日志消息中進行測試并定義環(huán)境變量 NODE_ DEBUG=app
時,日志消息將顯示:
$ NODE_DEBUG=app node index.js
APP 1000: hello from my debugger [123]
util.debuglog
甚至支持通配符(*
)灾馒,以防您希望同時為不同的模塊啟用日志消息茎用。
// index.js
const util = require('util')
const logGeneral = util.debuglog('app-general')
const logTimer = util.debuglog('app-timer')
const delay = 500
logGeneral('啟動應(yīng)用程序')
setTimeout(() => {
logTimer('%d 秒后計時器啟動', delay)
}, delay)
使用 app-*
環(huán)境變量運行腳本會導致以下結(jié)果:
$ NODE_DEBUG=app-* node index.js
APP-GENERAL 7384: 啟動應(yīng)用程序
APP-TIMER 7384: 500 秒后計時器啟動
NODE_DEBUG
環(huán)境變量還可以用于從 Node.js 內(nèi)部獲取調(diào)試消息。您可能偶爾會在 Node.js 文檔中遇到它睬罗。
最后
了解 util.debuglog
很好轨功,但它沒有涵蓋 debug
包的所有功能。對我來說容达,util.debuglog
是小型項目中 debug
包的一個很好的替代方案古涧。