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 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
May 09 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
详解vue slot插槽的使用方法
Jun 13 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
iview的table组件自带的过滤器实现
Jul 12 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
php 分页类 扩展代码
2009/06/11 PHP
php数组分页实现方法
2016/04/30 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
Smarty模板语法详解
2019/07/20 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
js切换div css注意的细节
2012/12/10 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
Python素数检测实例分析
2015/06/15 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
灵泰克Java笔试题
2016/01/09 面试题
培训主管的岗位职责
2013/11/23 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
委托公证书样本
2015/01/23 职场文书
悬空寺导游词
2015/02/05 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
房屋维修申请报告
2015/05/18 职场文书