本文摘錄自《Nodejs學習筆記》,更多章節及更新,請訪問 github主頁地址。歡迎加群交流,群號 197339705。
前言
在node程式開發中時,經常需要列印除錯日誌。用的比較多的是debug模組,比如express框架中就用到了。下文簡單舉幾個例子進行說明。文中相關程式碼示例,可在這裡找到。
備註:node在0.11.3版本也加入了util.debuglog()用於列印除錯日誌,使用方法跟debug模組大同小異。
基礎例子
首先,安裝debug
模組。
npm install debug複製程式碼
使用很簡單,執行node程式時,加上DEBUG=app
環境變數即可。
/**
* debug基礎例子
*/
var debug = require('debug')('app');
// 執行 DEBUG=app node 01.js
// 輸出:app hello +0ms
debug('hello');複製程式碼
例子:名稱空間
當專案程式變得複雜,我們需要對日誌進行分類列印,debug支援命令空間,如下所示。
DEBUG=app,api
:表示同時列印出名稱空間為app、api的除錯日誌。DEBUG=a*
:支援萬用字元,所有名稱空間為a開頭的除錯日誌都列印出來。
/**
* debug例子:名稱空間
*/
var debug = require('debug');
var appDebug = debug('app');
var apiDebug = debug('api');
// 分別執行下面幾行命令看下效果
//
// DEBUG=app node 02.js
// DEBUG=api node 02.js
// DEBUG=app,api node 02.js
// DEBUG=a* node 02.js
//
appDebug('hello');
apiDebug('hello');複製程式碼
例子:名稱空間排除
有的時候,我們想要列印出所有的除錯日誌,除了個別名稱空間下的。這個時候,可以通過-
來進行排除,如下所示。-account*
表示排除所有以account開頭的名稱空間的除錯日誌。
/**
* debug例子:排查名稱空間
*/
var debug = require('debug');
var listDebug = debug('app:list');
var profileDebug = debug('app:profile');
var loginDebug = debug('account:login');
// 分別執行下面幾行命令看下效果
//
// DEBUG=* node 03.js
// DEBUG=*,-account* node 03.js
//
listDebug('hello');
profileDebug('hello');
loginDebug('hello');複製程式碼
例子:自定義格式化
debug也支援格式化輸出,如下例子所示。
var debug = require('debug')('app');
debug('my name is %s', 'chyingp');複製程式碼
此外,也可以自定義格式化內容。
/**
* debug:自定義格式化
*/
var createDebug = require('debug')
createDebug.formatters.h = function(v) {
return v.toUpperCase();
};
var debug = createDebug('foo');
// 執行 DEBUG=foo node 04.js
// 輸出 foo My name is CHYINGP +0ms
debug('My name is %h', 'chying');複製程式碼
相關連結
debug:github.com/visionmedia…
debuglog:nodejs.org/api/util.ht…