Node.js利用debug模块打印出调试日志的方法


Posted in Javascript onApril 25, 2017

前言

大家都知道在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:https://github.com/visionmedia/debug
debuglog:https://nodejs.org/api/util.html#util_util_debuglog_section

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Javascript 相关文章推荐
ImageFlow可鼠标控制图片滚动
Jan 30 Javascript
tangram框架响应式加载图片方法
Nov 21 Javascript
js charAt的使用示例
Feb 18 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
jquery实现input框获取焦点的简单实例
Jan 26 Javascript
js面向对象编程总结
Feb 16 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
Vue隐藏显示、只读实例代码
Jul 18 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
Apr 25 #Javascript
json的结构与遍历方法实例分析
Apr 25 #Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 #jQuery
用vue和node写的简易购物车实现
Apr 25 #Javascript
ES6数组的扩展详解
Apr 25 #Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 #Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 #Javascript
You might like
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python 正则表达式操作指南
2009/05/04 Python
python在windows下实现备份程序实例
2014/07/04 Python
Python中的类学习笔记
2014/09/23 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python命令行解析模块详解
2018/02/01 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
社区国庆节活动方案
2014/02/05 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
优秀教师推荐材料
2014/12/16 职场文书
搞笑结婚保证书
2015/05/08 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
学生安全责任协议书
2016/03/22 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL