console模块提供了一个简单的调试功能,类似与web浏览器的javscript console。
下面简单介绍下该模块的使用以及用途,我使用了ES6的模版字符串(使用反引号标识),有兴趣的可以去了解。
1、打印信息到stdout
使用console.log()
,console.info()
以及console.warn()
等方法打印信息,info,warn都是log方法的别名,如果是浏览器环境,它们的显示颜色有差异。使用上有点类似C语言的printf()
函数,使用如下所示:
const info = "world";
console.log("log:"+"hello nodejs!");
console.info("info:"+"hello %s!",info);
console.warn("warn:"+`hello ${info}!`);
运行结果如下:
E:developmentdocument odejsdemo>node console-example.js
log:hello nodejs!
info:hello world!
warn:hello world!
使用console.error()
函数可以输出错误信息stderr,如下所示:
console.error(new Error('typeError'))
2、计时器
使用console.time()
和console.timeEnd()
函数组合来统计代码的执行时间,平常我们可以利用该功能来测试代码的性能,使用如下所示:
var sum = 0,
counts = 100000;
console.time(`${counts} acc takes`);
for(var i=0;i<counts;i++){
sum+=i;
}
console.timeEnd(`${counts} acc takes`);
运行结果如下:
E:developmentdocument odejsdemo>node console-example.js
100000 acc takes: 2ms
3、assert断言
使用console.assert(value[, message][, ...args])
函数,如果value是真则不做任何事,否则抛出AssertionError错误且终止代码的运行,如下所示:
console.assert(!1, 'hello %s','world.');
运行结果:
assert.js:89
throw new assert.AssertionError({
^
AssertionError: hello world.
at Console.assert (console.js:87:23)
at Object.(E:developmentdocument odejsdemoconsole-example.js:
2:9)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
4、栈追踪trace
使用console.trace()
函数,可以打印出栈调用到当前位置的信息,如下所示:
function add(a,b){
return a+b;
}
console.trace(add(1,2));
结果如下:
E:developmentdocument odejsdemo>node console-example.js
Trace: 3
at Object.(E:developmentdocument odejsdemoconsole-example.js:
32:9)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
5、将调试信息输出到文件中
利用Console
类的实例,同时指定log或info的输出流,以及warn或error的输出流,当使用log,info方法时,信息会写入normal.log,使用error,warn时,会写入error.log,如下所示:
var fs = require('fs'),
Console = console.Console;
var normalStream = fs.createWriteStream('./logs/normal.log'),
errStream = fs.createWriteStream('./logs/error.log');
var logger = new Console(normalStream,errStream);
logger.log('hello world!');
运行结果如下:
normal.log:
hello world!
error.log:
error code is 101