Node.js console 模块

Java FileNode.js 内置模块


console 模块是 Node.js 中最常用的内置模块之一,它提供了一个简单的调试控制台,类似于浏览器中的 JavaScript console 对象。这个模块主要用于向标准输出(stdout)和标准错误(stderr)打印信息,是开发过程中调试和记录日志的重要工具。


console 模块的基本用法

1. 打印普通信息

console.log() 是最常用的方法,用于打印普通信息:

实例

console.log('Hello, Node.js!');
// 输出: Hello, Node.js!

2. 打印错误信息

console.error() 用于打印错误信息,默认输出到 stderr:

实例

console.error('This is an error message');
// 输出(红色): This is an error message

3. 打印警告信息

console.warn() 用于打印警告信息:

实例

console.warn('This is a warning message');
// 输出(黄色): This is a warning message

4. 打印信息性消息

console.info()console.log() 类似,用于打印信息性消息:

实例

console.info('This is an informational message');
// 输出: This is an informational message

console 模块的高级功能

1. 格式化输出

console 模块支持类似 C 语言 printf() 风格的格式化输出:

实例

const name = 'Alice';
const age = 25;
console.log('Name: %s, Age: %d', name, age);
// 输出: Name: Alice, Age: 25

支持的格式化占位符:

  • %s - 字符串
  • %d - 数字(整数或浮点数)
  • %i - 整数
  • %f - 浮点数
  • %o - 对象
  • %j - JSON

2. 计时功能

console.time()console.timeEnd() 可以用于测量代码执行时间:

实例

console.time('array test');
const arr = [];
for (let i = 0; i < 1000000; i++) {
  arr.push(i);
}
console.timeEnd('array test');
// 输出: array test: 12.345ms

3. 分组输出

console.group()console.groupEnd() 可以创建可折叠的消息组:

实例

console.group('User Details');
console.log('Name: Alice');
console.log('Age: 25');
console.groupEnd();

4. 表格输出

console.table() 可以以表格形式输出数组或对象:

实例

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 }
];
console.table(users);

5. 断言测试

console.assert() 用于简单的断言测试:

实例

const x = 5;
console.assert(x === 10, 'x should be 10');
// 当断言为 false 时输出: Assertion failed: x should be 10

console 模块的配置选项

1. 自定义输出流

可以创建自定义的 Console 实例,指定不同的输出流:

实例

const { Console } = require('console');
const fs = require('fs');

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');

const logger = new Console(output, errorOutput);

logger.log('This will be written to stdout.log');
logger.error('This will be written to stderr.log');

2. 颜色和样式

在支持 ANSI 颜色的终端中,console 输出可以带有颜色:

实例

console.log('\x1b[36m%s\x1b[0m', 'Cyan colored text');

或者使用第三方库如 chalk 来简化颜色控制:

实例

const chalk = require('chalk');
console.log(chalk.blue('Blue text'));

最佳实践

  1. 生产环境日志:在生产环境中,建议使用专门的日志库如 winstonbunyan 代替 console。
  2. 避免过度使用:只在开发和调试阶段使用 console,生产代码中应移除不必要的 console 语句。
  3. 性能考虑:console.log 是同步的,在性能敏感的场景中要谨慎使用。
  4. 错误处理:使用 console.error 来记录错误信息,便于区分和过滤。

方法与属性列表

以下是 Node.js console 模块的主要方法和属性:

方法/属性 描述 输出流 版本引入
console.log([data][, ...args]) 打印到 stdout,带换行符 stdout 0.1.100
console.error([data][, ...args]) 打印到 stderr,带换行符 stderr 0.1.100
console.warn([data][, ...args]) console.error 的别名 stderr 0.1.100
console.info([data][, ...args]) console.log 的别名 stdout 0.1.100
console.debug([data][, ...args]) 打印调试信息到 stdout stdout 8.0.0
console.dir(obj[, options]) 对对象使用 util.inspect() 并打印结果 stdout 0.1.100
console.time([label]) 启动一个计时器 - 0.1.100
console.timeEnd([label]) 停止计时器并打印结果 stdout 0.1.100
console.timeLog([label][, ...data]) 打印当前计时器值 stdout 10.7.0
console.trace([message][, ...args]) 打印堆栈跟踪到 stderr stderr 0.1.100
console.assert(value[, message][, ...args]) 如果 value 为假值,则断言失败并打印 message stderr 0.1.100
console.clear() 尝试清空控制台 - 8.3.0
console.count([label]) 对 label 调用次数计数 stdout 8.3.0
console.countReset([label]) 重置计数器 stdout 8.3.0
console.group([...label]) 缩进后续输出 stdout 8.5.0
console.groupEnd() 结束当前缩进组 stdout 8.5.0
console.table(tabularData[, properties]) 以表格形式打印数据 stdout 10.0.0
console.dirxml(...data) 如果支持,调用 console.log 打印 XML/HTML 树 stdout -

特殊属性

属性 描述
console.stdout 指向标准输出的可写流
console.stderr 指向标准错误输出的可写流

Node.js 的 console 模块是一个简单但功能强大的调试工具,提供了从基本日志记录到高级功能如计时、表格输出等多种方法。掌握 console 模块的使用可以显著提高开发效率和调试体验。

Java FileNode.js 内置模块