Node.js:console模块

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\nodejsdemo>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\nodejsdemo>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\nodejsdemo\console-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\nodejsdemo>node console-example.js
Trace: 3
at Object. (E:\developmentdocument\nodejsdemo\console-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

posted @ 2016-11-24 09:46  SniffRose  阅读(399)  评论(0编辑  收藏  举报