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中Math对象使用说明
Jan 16 Javascript
javascript getElementsByTagName
Jan 31 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
javascript设置页面背景色及背景图片的方法
Dec 29 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
Oct 12 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
关于layui时间回显问题的解决方法
Sep 24 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
学习Vue组件实例
2018/04/28 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
Python小白垃圾回收机制入门
2020/06/09 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
装饰活动策划方案
2014/02/11 职场文书
运动会入场口号
2014/06/07 职场文书
销售人员工作自我评价
2014/09/21 职场文书
门面房租房协议书
2014/12/01 职场文书
护理专业自荐信范文
2015/03/06 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
Python的property属性详细讲解
2022/04/11 Python