Node.js 使用 debug 模块打印调试日志详解

作者:星河

时间:2026-10-22

浏览:332

本文介绍如何在 Node.js 项目中利用 debug 模块高效打印调试日志。涵盖基础安装、通过 DEBUG 环境变量控制输出、命名空间的分类管理、排除特定命名空间以及自定义格式化输出等实用技巧,帮助开发者优化调试体验。

文章目录

Node.js debug 模块使用指南

前言

在 Node.js 程序开发过程中,打印调试日志是一项常见需求。目前较为流行的解决方案是使用 debug 模块,例如 Express 框架内部便采用了该模块。本文将通过几个具体示例来演示其用法,相关代码示例可在文中提供的链接处获取。

补充说明:Node.js 从 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 模块仓库:https://github.com/visionmedia/debug Node.js util.debuglog 文档:https://nodejs.org/api/util.html#util_util_debuglog_section

总结

以上就是本文的全部内容,希望这些内容能对大家的学习或工作有所帮助。如有任何疑问,欢迎留言交流,感谢支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章