node.js 之 Console 打印调试信息
-
简介
console模块提供了简单的调试输出的工具和浏览器的console类似
这个模块导出了两个指定的组件
第一个,一个Console类,有诸如console.log().console.error()和console.warn()这样的方法,能够输出任何的Node.js数据流
第二个,全局的console实例,用来输出stdout和stderr,不需要导入require('console') -
API
1.console类
可以创建一个简单的记录器,输出的数据流可配置并且可以通过require('console').Console或者console.Console这样的方式创建
const {Console} = require('console');
const {Console} = console;
两者等价
2.new Console(stdout[, stderr])
传递两个可写的数据流实例来创建一个新的Console实例,stdout是一个可写的数据流用来打印输出记录或者信息,stderr是用来打印输出警告和错误信息,如果没有传递stderr,那么警告和错误信息会移交给stdout,他们两个的信息输出到指定的文件中,下面是例子
首先自行创建 stdout.log 和 stderr.log 文件
const fs = require('fs');
const { Console } = require('console');
const output = fs.createWriteStream('./stdout.log');
const errOutput = fs.createWriteStream('./stderr.log');
const logger = new Console(output, errOutput);
const count = 5;
logger.log('count: %d', count)
注意:全局的console其实就是上面的一种特殊情况,只不过全局console的output给了process.stdout和process.stderr也就是new Console(process.stdout,process.stderr);
3.console.assert(value[, message][, ...args])
这是一个简单的断言测试用来验证value是否是真的,如果不是就会抛出一个断言错误,后续的代码不会执行,如果提供了message那么这个会当做错误信息打印出来
注意:这个方法和浏览器的console.assert()方法有差别,浏览器的断言测试不会中断后续的代码的执行,如果想在node中实现和浏览器相同的功能可以通过扩展Node.js的console模块和重写console.assert()方法
4.console.dir(obj[, options])
此方法用来将一个对象每一项都打印成字符串,相当于把对象的键值对展示出来,不需要传递任何的inspect()函数,options是可选的用来对输出的结果做一定的修改,参数如下
showHidden 是否展示出不可枚举的信息
depth 递归的次数,无限次递归传递null
colors 将结果转化成样式代码 //{ a: [33m1[39m, b: [33m2[39m }
5.console.error([data][, ...args])
将信息输出给stderr,可以传递多个参数,其中data是主要的信息参数,其余的args参数是用来当做变量替换的,例子如下
const code = 5;
console.error('error #%d',code);
%d是格式化元素,如果没有传递,参数之间就是通过简单的串联拼接,%d是C语言中格式化输出的,类似于printf("a=%d",a);a就是整形值
6.console.info([data][, ...args])
此方法和console.log类似
7.console.log([data][, ...args])
将信息输出到stdout中,其余和console.error一致
8.console.time(label)
这个方法有点意思,是用来记录一段程序执行的时间,label是字符串标记
logger.time('a3');
var a = 1
for (var i = 0; i < 1000; i++) {
a += i
}
logger.timeEnd('a3')
记录的时间就会输出到stdout中
9.console.trace([message][, ...args])
将message当前所在的位置(堆栈追踪),和message输出到stderr中
例子:
console.trace('Show me');
在我的stderr.log文件中输入
Trace: Show me
at Object.<anonymous> (C:\Users\jky\Desktop\demo\node.js\demo.js:23:8)
at Module._compile (module.js:569:30)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
at Function.Module.runMain (module.js:605:10)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:575:3
10.console.warn([data][, ...args])
此方法是console.error()方法的别名