🌙 NodeJS之console模块学习笔记
🌙 1.console(控制台)简介
console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。
该模块导出两个特定组件:
Console类,包含console.log()、console.error()和console.warn()等方法,可用于写入任何 Node.js 流。- 全局的
console实例,配置为写入process.stdout(opens new window) 和process.stderr(opens new window)。 使用时无需调用require('console')。
注意:全局的 console 对象的方法既不像浏览器中的 API 那样总是同步的,也不像其他 Node.js 流那样总是异步的。 详见进程 I/O (opens new window)。
使用全局 console 的示例:
console.log('你好世界');
// 打印到 stdout: 你好世界
console.log('你好%s', '世界');
// 打印到 stdout: 你好世界
console.error(new Error('错误信息'));
// 打印到 stderr: [Error: 错误信息]
const name = '描述';
console.warn(`警告${name}`);
// 打印到 stderr: 警告描述
2
3
4
5
6
7
8
9
10
使用 Console 类的示例:
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('你好世界');
// 打印到 out: 你好世界
myConsole.log('你好%s', '世界');
// 打印到 out: 你好世界
myConsole.error(new Error('错误信息'));
// 打印到 err: [Error: 错误信息]
const name = '描述';
myConsole.warn(`警告${name}`);
// 打印到 err: 警告描述
2
3
4
5
6
7
8
9
10
11
12
13
14
🌙 2.Console 类
🌙 2.1 new Console(options)构造函数
optionsObject (opens new window)stdoutstream.Writable (opens new window)stderrstream.Writable (opens new window)ignoreErrorsboolean (opens new window) 在写入底层流时忽略错误。默认值:true。colorModeboolean (opens new window) | string (opens new window) 此Console实例设置颜色支持。 设置为true会在检查值时启用着色。 设置为false会在检查值时禁用着色。 设置为'auto'会使颜色支持取决isTTY属性的值和getColorDepth()在相应流上返回的值。 如果设置了inspectOptions.colors,则不能使用此选项。 默认值:'auto'。inspectOptionsObject (opens new window) 指定传给util.inspect()(opens new window) 的选项。groupIndentationnumber (opens new window) 设置缩进. Default:2.
创建具有一个或两个可写流实例的新 Console。 stdout 是一个可写流,用于打印日志或信息输出。 stderr 用于警告或错误输出。 如果未提供 stderr,则 stdout 用于 stderr。
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// 自定义的简单记录器。
const logger = new Console({ stdout: output, stderr: errorOutput });
// 像控制台一样使用它。
const count = 5;
logger.log('count: %d', count);
// 在 stdout.log 中: count 5
2
3
4
5
6
7
8
全局的 console 是一个特殊的 Console,其输出发送到 process.stdout (opens new window) 和 process.stderr (opens new window)。 相当于调用:
new Console({ stdout: process.stdout, stderr: process.stderr });
🌙 2.2 console.assert(value[, ...message])断言测试
valueany (opens new window) 测试是否为真的值。...messageany (opens new window) 除value之外的所有参数都用作错误消息。
一个简单的断言测试,用于验证 value 是否为真。 如果不是,则记录 Assertion failed。 如果提供 message,则通过传入所有消息参数来使用 util.format() (opens new window) 格式化错误消息。 输出用作错误消息。
console.assert(true, '什么都不做');
// OK
console.assert(false, '%s 工作', '无法');
// Assertion failed: 无法工作
2
3
4
🌙 2.3 console.clear()清空控制台
console.clear() 的具体操作可能因操作系统和终端类型而异。 对于大多数 Linux 操作系统, console.clear() 的操作与 clear 的 shell 命令类似。 在 Windows 上, console.clear() 将仅清除当前终端视图中 Node.js 二进制文件的输出。
🌙 2.4console.count([label])计数器 console.countReset([label])重置
labelstring (opens new window) 计数器的显示标签。默认值:'default'。
维护一个特定于 label 的内部计数器,并将用给定 label 调用 console.count() 的次数输出到 stdout。
console.count()
default: 1
undefined
console.count('default')
default: 2
undefined
console.count('abc')
abc: 1
undefined
console.count('xyz')
xyz: 1
undefined
console.count('abc')
abc: 2
console.countReset('abc')
undefined
console.count('abc')
abc: 1
undefined
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
🌙 2.5 console.debug(data[, ...args])和console.log(data[, ...args])
dataany (opens new window)...argsany (opens new window)
console.debug() 函数是 console.log() (opens new window) 的别名。
打印到 stdout,并加上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) (opens new window) 中的代替值(参数都会传给 util.format() (opens new window))。
const count = 5;
console.log('计数: %d', count);
// 打印到 stdout: 计数: 5
console.log('计数:', count);
// 打印到 stdout: 计数: 5
2
3
4
5
🌙 2.6 console.dir(obj[, options])
🌙 2.7 console.error([data][, ...args]) 和console.warn([data][, ...args])
dataany (opens new window)...argsany (opens new window)
console.warn() 函数是 console.error() (opens new window) 的别名。
const code = 5;
console.error('error #%d', code);
// 打印到 stderr: error #5
console.error('error', code);
// 打印到 stderr: error 5
2
3
4
5
🌙 2.8 console.group([...label])和console.groupCollapsed()
🌙 console.groupCollapsed()是console.group() (opens new window) 的别名。
🌙 2.9 console.info([data][, ...args])
console.info() 函数是 console.log() (opens new window) 的别名。
🌙 2.10 console.table(tabularData[, properties])
tabularDataany (opens new window)propertiesstring[] (opens new window) 构造表的备用属性。
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │ a │ b │
// ├─────────┼─────┼─────┤
// │ 0 │ 1 │ 'Y' │
// │ 1 │ 'Z' │ 2 │
// └─────────┴─────┴─────┘
2
3
4
5
6
7
🌙 2.11 console.time([label])和console.timeEnd([label])
labelstring (opens new window) 默认值:'default'。
console.time启动一个计时器,用以计算一个操作的持续时间。 计时器由一个唯一的 label 标识。 当调用 console.timeEnd() (opens new window) 时,可以使用相同的 label 来停止计时器,并以毫秒为单位将持续时间输出到 stdout。 计时器持续时间精确到亚毫秒。
console.timeEnd停止先前通过调用 console.time() (opens new window) 启动的计时器,并打印结果到 stdout:
console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// 打印 100-elements: 225.438ms
2
3
4
🌙 2.12 console.timeLog([label][, ...data])
labelstring (opens new window) 默认值:'default'。...dataany (opens new window)
对于先前通过调用 console.time() (opens new window) 启动的计时器,将经过时间和其他 data 参数打印到 stdout:
console.time('process');
const value = expensiveProcess1(); // 返回 42
console.timeLog('process', value);
// 打印 "process: 365.227ms 42"。
doExpensiveProcess2(value);
console.timeEnd('process');
2
3
4
5
6
🌙 3. 小结
// 普通打印
console.log('hello');
console.info('hello');
console.debug('hello');
// 警告错误
console.error('error');
console.warn('error');
// 时间
console.time('label');
console.timeEnd('label');
// 表格
console.table([{a:1},{b:2}]);
// 对象属性
console.dir({a: 1});
// 断言
console.assert(32, '错了');
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20