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 相关文章推荐
接收键盘指令的脚本
Jun 26 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
Dec 27 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
JavaScript设计模式之外观模式实例
Oct 10 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
js实现StringBuffer的简单实例
Sep 02 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 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入门教程 精简版
2009/12/13 PHP
试用php中oci8扩展
2015/06/18 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
Python类的基础入门知识
2008/11/24 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
Python实战之制作天气查询软件
2019/05/14 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
python unichr函数知识点总结
2020/12/16 Python
Pandas之缺失数据的实现
2021/01/06 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
新电JAVA笔试题目
2014/08/31 面试题
外贸学院会计专业应届生求职信
2013/11/14 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
党员进社区活动总结
2015/05/07 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python