模块概览

console模块提供了基础的调试功能。使用很简单,常用的API主要有 console.log()、console.error()。

此外,可以基于Console类,方便的扩展出自己的console实例,比如把调试信息打印到文件里,而部署输出在控制台上。

直接看例子。

基础例子

无特殊说明,日志都是默认打印到控制台。最常用的是console.log()、console.error()两个方法。

  • console.log(msg):普通日志打印。
  • console.error(msg):错误日志打印。
  • console.info(msg):等同于console.log(msg)
  • console.warn(msg):等同于console.error(msg)

例子如下:

console.log('log: hello');
console.log('log: hello', 'chyingp');
console.log('log: hello %s', 'chyingp'); console.error('error: hello');
console.error('error: hello', 'chyingp');
console.error('error: hello %s', 'chyingp'); // 输出如下:
// log: hello
// log: hello chyingp
// log: hello chyingp
// error: hello
// error: hello chyingp
// error: hello chyingp

自定义stdout

可以通过 new console.Console(stdout, stderr) 来创建自定义的console实例,这个功能很实用。

比如你想将调试信息打印到本地文件,那么,就可以通过如下代码实现。

var fs = require('fs');
var file = fs.createWriteStream('./stdout.txt'); var logger = new console.Console(file, file); logger.log('hello');
logger.log('word'); // 备注:内容输出到 stdout.txt里,而不是打印到控制台

计时

通过console.time(label)console.timeEnd(label),来打印出两个时间点之间的时间差,单位是毫秒,例子如下。

var timeLabel = 'hello'

console.time(timeLabel);

setTimeout(console.timeEnd, 1000, timeLabel);
// 输入出入:
// hello: 1005.505ms

断言

通过 console.assert(value, message) 进行断言。如果value不为true,那么抛出AssertionError异常,并中断程序执行。

如下代码所示,第二个断言报错,程序停止执行。

console.assert(true, '1、right');
console.assert(false, '2、right', '2、wrong'); // 输出如下:
// assert.js:90
// throw new assert.AssertionError({
// ^
// AssertionError: 2、right 2、wrong
// at Console.assert (console.js:95:23)

为避免程序异常退出,需要对上面的异常进行处理,比如:

try{
console.assert(false, 'error occurred');
}catch(e){
console.log(e.message);
} // 输出如下:
// error occurred

打印错误堆栈:console.trace(msg)

将msg打印到标准错误输出流里,包含当前代码的位置和堆栈信息。

console.trace('trace is called');

// 输出如下:
// Trace: trace is called
// at Object.<anonymous> (/Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.12.01-console/trace.js:1:71)
// at Module._compile (module.js:541:32)
// at Object.Module._extensions..js (module.js:550:10)
// at Module.load (module.js:456:32)
// at tryModuleLoad (module.js:415:12)
// at Function.Module._load (module.js:407:3)
// at Function.Module.runMain (module.js:575:10)
// at startup (node.js:160:18)
// at node.js:445:3

深层打印

很少关注 console.dir(obj),因为大部分时候表现跟 console.log(obj) 差不多,看例子

var obj = {
nick: 'chyingp'
}; console.log(obj); // 输出:{ nick: 'chyingp' }
console.dir(obj); // 输出:{ nick: 'chyingp' }

但当obj的层级比较深时,用处就出来了。可以通过depth自定义打印的层级数,默认是2,这对于调试很有帮助。

var obj2 = {
human: {
man: {
info: {
nick: 'chyingp'
}
}
}
}; console.log(obj2); // 输出:{ human: { man: { info: [Object] } } }
console.dir(obj2); // 输出:{ human: { man: { info: [Object] } } } console.dir(obj2, {depth: 3}); // 输出:{ human: { man: { info: { nick: 'chyingp' } } } }

相关链接

官方文档:https://nodejs.org/api/console.html

NodeJS学习笔记 (18)基础调试-console(ok)的更多相关文章

  1. Nodejs学习笔记:基础

    本文章主要记录Nodejs基础知识点 安装 首先从Node.js官网下载安装包,并添加到环境变量.然后打开命令行,输入 node --version ,可查看版本信息 npm是Node.js的包管理工 ...

  2. NodeJS学习笔记 (19)进阶调试-debugger(ok)

    写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具.通过IDE(如vscode).通过node-inspector,三者本质上差不多.本文着重点在于介绍 如何在本地通过nod ...

  3. nodejs学习笔记Node.js 调试命令

    3.4  调试        47  下面是一个简单的例子: $ node debug debug.js < debugger listening on port 5858 connecting ...

  4. Nodejs学习笔记(二)——Eclipse中运行调试Nodejs

    前篇<Nodejs学习笔记(一)——初识Nodejs>主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤.本篇主要介绍如何在Eclipse中运行 ...

  5. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  6. Nodejs学习笔记(十六)—Pomelo介绍&入门

    前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...

  7. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

  8. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  9. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

随机推荐

  1. Linux就该这么学 20181003(第三章管道符)

    参考链接https://www.linuxprobe.com/ 输入输出重定向 标准输入重定向STDIN 文件描述符0 默认键盘输入 标准输出重定向STOUT 文件描述符1 默认输出到屏幕 错误输出重 ...

  2. sts安装出现could not find jar:file解决办法,could not find jar:file,sts安装

    标题sts插件下载好但是安装出错 我的eclipse是4.5.2,在官方网站https://spring.io/tools3/sts/legacy下载,压缩包的名字为:spring-tool-suit ...

  3. Photoshop CC (2015.2) 2016.1 版

    1.设计空间(预览版)增强 Design Space (Preview) 2.画板 3.Surface Pro触屏优化(多种手势) 4.自定义工具栏和工作区 5.字体收藏夹(要死掉一批扩展) 6.库( ...

  4. django 获得请求头

    django 获得到的请求头封装在 request 的 META 中,为一个 dict 以下选自官方文档: https://docs.djangoproject.com/zh-hans/2.0/ref ...

  5. luogu P1365 WJMZBMR打osu! / Easy(期望DP)

    题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...

  6. mac同时享受教育优惠和免手续费分期

    神奇地址:工商银行  http://store.apple.com/cn_icbc_edu招商银行  http://store.apple.com/cn_cmb_edu农业银行  http://sto ...

  7. Memcached存储溢出

    Memcached存储溢出 测试数据生成程序: package com.stoon.test; public class TestFor { public static void main(Strin ...

  8. HDU4324 Triangle LOVE【拓扑排序】

    Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  9. 多线程02---pThread简单介绍

    1.简单介绍 pthread 是属于 POSIX 多线程开发框架. 它是c语言提供的一个跨平台的多线程解决方式.因为其在iOS编程中,操作比較麻烦.一般不用,这里介绍只作为了解. 2.pthread的 ...

  10. 汇编中中括号[]作用以及lea和mov指令的区别

    现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令:对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:mov eax,2lea ebx, ...