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 相关文章推荐
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
javascript常用的方法分享
Jul 01 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
Vue路由权限控制解析
Nov 09 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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
深入解析Python中的urllib2模块
2015/11/13 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
写自荐信有哪些不宜?
2013/10/17 职场文书
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
家长评语大全
2014/01/22 职场文书
班班通项目实施方案
2014/02/25 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
2014年居委会工作总结
2014/12/09 职场文书
签约仪式致辞
2015/07/30 职场文书
Python List remove()实例用法详解
2021/08/02 Python
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android