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弹出层代码
Sep 24 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
javascript实现图片上传前台页面
Aug 18 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
vue实现简单跑马灯效果
May 25 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使用者状态管理功能的应用
2006/10/09 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
ES6新增的math,Number方法
2017/08/06 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
js实现点击生成随机div
2020/01/16 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python实现连接mongodb的方法
2015/05/08 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Python logging模块用法示例
2018/08/28 Python
python DataFrame 取差集实例
2019/01/30 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python使用xpath实现图片爬取
2020/09/16 Python
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
会计实习自我鉴定
2013/12/04 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
安全生产计划书
2014/05/04 职场文书
委托书怎么写
2014/07/31 职场文书
婚内房产协议书范本
2014/10/02 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
授权委托书协议书
2014/10/16 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
详解Nginx 工作原理
2021/03/31 Servers
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis