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 相关文章推荐
javascript 写类方式之四
Jul 05 Javascript
javascript Array对象基础知识小结
Nov 16 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
JavaScript去除数组里重复值的方法
Jul 13 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 Javascript
javascript实现无缝上下滚动特效
Dec 16 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
vue 动态表单开发方法案例详解
Dec 02 Javascript
Openlayers实现距离面积测量
Sep 28 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版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
使用python实现省市三级菜单效果
2016/01/20 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
读群众路线心得体会
2014/03/07 职场文书
需求分析说明书
2014/05/09 职场文书
升国旗演讲稿
2014/09/05 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
python必学知识之文件操作(建议收藏)
2021/05/30 Python