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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
使用JavaScript进行表单校验功能
Aug 01 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
vue.js中实现登录控制的方法示例
Apr 23 Javascript
VuePress 快速踩坑小结
Feb 14 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
20招让你的Python飞起来!
2016/09/27 Python
Python中取整的几种方法小结
2017/01/06 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
python查看数据类型的方法
2019/10/12 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
如何通过命令行进入python
2020/07/06 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
你懂得怎么写自荐信吗?
2013/12/27 职场文书
天网工程实施方案
2014/03/26 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
个人作风建设自查报告
2014/10/22 职场文书
商业计划书之服装
2019/09/09 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
一篇文章带你复习java知识点
2021/06/28 Java/Android