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 XML实现两级级联下拉列表
Nov 10 Javascript
javascript call和apply方法
Nov 24 Javascript
JavaScript 数组详解
Oct 10 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
jQuery基础知识点总结(DOM操作)
Jun 01 Javascript
微信小程序 封装http请求实例详解
Jan 16 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
vue观察模式浅析
2018/09/25 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
java直接调用python脚本的例子
2014/02/16 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python如何基于redis实现ip代理池
2020/01/17 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
留学自荐信的技巧
2013/10/17 职场文书
毕业自荐书
2013/12/09 职场文书
三万活动总结
2014/04/28 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
部门主管竞聘书
2015/09/15 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python