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 相关文章推荐
js调用activeX获取u盘序列号的代码
Nov 21 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
Javascript节点关系实例分析
May 15 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
浅析vue深复制
Jan 29 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 Javascript
JavaScript实现的拼图算法分析
Feb 13 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 Javascript
基于JS实现视频上传显示进度条
May 12 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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面向对象精要总结
2014/11/07 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
jquery 选择器部分整理
2009/10/28 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
深入理解Python装饰器
2016/07/27 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
C#笔试题
2015/07/14 面试题
写给女生的道歉信
2014/01/08 职场文书
消防验收申请报告
2015/05/15 职场文书
2015年教师节主持词
2015/07/03 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL