zoukankan      html  css  js  c++  java
  • 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 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

  • 相关阅读:
    一起谈.NET技术,用Dojo实现Ajax请求:XHR、跨域、及其他 狼人:
    一起谈.NET技术,微软 Share Point 2010 企业应用解决方案 狼人:
    一起谈.NET技术,MVC2.0本地化(另类解决方案)&lt;上&gt; 狼人:
    一起谈.NET技术,WCF的问题和Using语句块 狼人:
    一起谈.NET技术,微软缘何认为VB与C#需要异步语法 狼人:
    一起谈.NET技术,SharePoint 2010 BI:Chart WebPart 狼人:
    一起谈.NET技术,微博是个大金矿,使用VS2010编译QOAuth支持微博通用认证OAuth实现SINA微博登陆 狼人:
    一起谈.NET技术,不要在using语句中调用WCF服务 狼人:
    一起谈.NET技术,使用Dijit实现界面组件化开发 狼人:
    一起谈.NET技术,通过自定义配置实现插件式设计 狼人:
  • 原文地址:https://www.cnblogs.com/zmxmumu/p/6094159.html
Copyright © 2011-2022 走看看