Node.js v10.15.0 文档


console(控制台)#

中英对照提交修改

稳定性: 2 - 稳定

console 模块提供了一个调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。

该模块有两个组件:

  • Console 类,包含 console.log()console.error()console.warn() 等方法,可用于写入到任何 Node.js 流。
  • 全局的 console 实例,可用于写入到 process.stdoutprocess.stderr。 使用时无需调用 require('console')

全局的 console 对象的方法既不像浏览器中的 API 那样总是同步的,也不像其他 Node.js 流那样总是异步的。 详见 进程 I/O

例子,使用全局的 console

console.log('你好世界');
// 输出 '你好世界' 到 stdout。
console.log('你好%s', '世界');
// 输出 '你好世界' 到 stdout。
console.error(new Error('错误信息'));
// 输出 '[Error: 错误信息]' 到 stderr。

const name = '描述';
console.warn(`警告${name}`);
// 输出 '警告描述' 到 stderr。

例子,使用 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('错误信息'));
// 输出 '[Error: 错误信息]' 到 err。

const name = '描述';
myConsole.warn(`警告${name}`);
// 输出 '警告描述' 到 err。

Console 类#

中英对照提交修改

Console 类可用于创建一个具有可配置的输出流的简单记录器,可以通过 require('console').Consoleconsole.Console 使用:

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

new Console(stdout[, stderr][, ignoreErrors])#

new Console(options)#

中英对照提交修改

  • options <Object>

    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> 是否在向输出流写数据时忽略错误, 默认为 true.
    • colorMode <boolean> | <string> 配置该 Console 实例的颜色支持。 设为 true 将会使控制台在检查数据时为其上色,设为 auto 会使是否启用颜色取决于 isTTY 属性的值和对应的数据流的 getColorDepth() 返回的值。默认为 auto

用一个或两个输出流实例创建一个新的 Console。 输出流 stdout 用来记录日志和信息;stderr 用来记录警告和错误。如果不提供 stderr,则 stdout 会被用作 stderr

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// in stdout.log: count 5

全局符号 console 是一个特殊的 Console 实例,其输出会被送往 process.stdoutprocess.stderr。它等价于调用:

new Console({ stdout: process.stdout, stderr: process.stderr });

console.assert(value[, ...message])#

中英对照提交修改

  • value <any> The value tested for being truthy.
  • ...message <any> All arguments besides value are used as error message.

一个简单的断言测试,验证 value 是否为真。 如果不为真,则抛出 AssertionError。 如果提供了 message,则使用 util.format() 格式化并作为错误信息使用。

console.assert(true, 'does nothing');
// 通过
console.assert(false, 'Whoops %s', 'didn\'t work');
// AssertionError: Whoops didn't work

console.clear()#

中英对照提交修改

stdout 是一个 TTY 时,调用 console.clear() 将尝试清除 TTY。 当 stdout 不是一个TTY时,该方法什么都不做。

注意console.clear() 的具体行为可能因操作系统和终端类型而异。 对于大多数Linux操作系统,console.clear()clear shell 命令行为类似。 在Windows上,console.clear() 将只清除当前终端视图中Node.js二进制文件的输出。

console.count([label])#

中英对照提交修改

  • label <string> 计数器的显示标签。 默认为 'default'

维护一个指定 label 的内部计数器并且输出到 stdout 指定 label 调用 console.count() 的次数。

> 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
undefined
> console.count()
default: 3
undefined
>

console.countReset([label])#

中英对照提交修改

  • label <string> 计数器的显示标签。 默认为 'default'

重置指定 label 的内部计数器。

> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>

console.debug(data[, ...args])#

暂无中英对照

The console.debug() function is an alias for console.log().

console.dir(obj[, options])#

中英对照提交修改

obj 上使用 util.inspect() 并打印结果字符串到 stdout。 该函数会绕过任何定义在 obj 上的自定义的 inspect() 函数。 可选的 options 对象可以传入用于改变被格式化的字符串:

  • showHidden - 如果为 true,则该对象中的不可枚举属性和 symbol 属性也会显示。默认为 false

  • depth - 告诉 util.inspect() 函数当格式化对象时要递归多少次。 这对于检查较大的复杂对象很有用。 默认为 2。 设为 null 可无限递归。

  • colors - 如果为 true,则输出会带有 ANSI 颜色代码。 默认为 false。 颜色是可定制的,详见定制 util.inspect() 颜色

console.dirxml(...data)#

暂无中英对照

This method calls console.log() passing it the arguments received. Please note that this method does not produce any XML formatting.

console.error([data][, ...args])#

中英对照提交修改

打印到 stderr,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const code = 5;
console.error('error #%d', code);
// 打印: error #5 到 stderr
console.error('error', code);
// 打印: error 5 到 stderr

如果在第一个字符串中没有找到格式化元素(如 %d),则在每个参数上调用 util.inspect() 并将结果字符串值拼在一起。 详见 util.format()

console.group([...label])#

中英对照提交修改

将后续行的缩进增加两个空格。

如果提供了一个或多个 labels,则首先打印这些 labels,而不需要额外的缩进。

console.groupCollapsed()#

中英对照提交修改

console.group()的一个别名.

console.groupEnd()#

中英对照提交修改

将后续行的缩进减少两个空格。

console.info([data][, ...args])#

中英对照提交修改

console.info() 函数是 console.log() 的一个别名。

console.log([data][, ...args])#

中英对照提交修改

打印到 stdout,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const count = 5;
console.log('count: %d', count);
// 打印: count: 5 到 stdout
console.log('count:', count);
// 打印: count: 5 到 stdout

详见 util.format()

console.table(tabularData[, properties])#

暂无中英对照

  • tabularData <any>
  • properties <string[]> Alternate properties for constructing the table.

Try to construct a table with the columns of the properties of tabularData (or use properties) and rows of tabularData and log it. Falls back to just logging the argument if it can’t be parsed as tabular.

// These can't be parsed as tabular data
console.table(Symbol());
// Symbol()

console.table(undefined);
// undefined

console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │  a  │  b  │
// ├─────────┼─────┼─────┤
// │    0    │  1  │ 'Y' │
// │    1    │ 'Z' │  2  │
// └─────────┴─────┴─────┘

console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
// ┌─────────┬─────┐
// │ (index) │  a  │
// ├─────────┼─────┤
// │    0    │  1  │
// │    1    │ 'Z' │
// └─────────┴─────┘

console.time([label])#

中英对照提交修改

启动一个定时器,用以计算一个操作的持续时间。 定时器由一个唯一的 label 标识。 当调用 console.timeEnd() 时,可以使用相同的 label 来停止定时器,并以毫秒为单位将持续时间输出到 stdout。 定时器持续时间精确到亚毫秒。

console.timeEnd([label])#

中英对照提交修改

停止之前通过调用 console.time() 启动的定时器,并打印结果到 stdout

console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// 打印 100-elements: 225.438ms

注意:从 Node.js v6.0.0 开始,console.timeEnd() 删除了计时器以避免泄漏。 在旧版本上,计时器依然保留。 它允许 console.timeEnd() 可以多次调用同一标签。 此功能是非计划中的,不再被支持。

console.timeLog([label][, ...data])#

暂无中英对照

For a timer that was previously started by calling console.time(), prints the elapsed time and other data arguments to stdout:

console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process');

console.trace([message][, ...args])#

中英对照提交修改

打印字符串 'Trace :'stderr ,并通过 util.format() 格式化消息与堆栈跟踪在代码中的当前位置。

console.trace('Show me');
// 打印: (堆栈跟踪会根据被调用的跟踪的位置而变化)
//  Trace: Show me
//    at repl:2:9
//    at REPLServer.defaultEval (repl.js:248:27)
//    at bound (domain.js:287:14)
//    at REPLServer.runBound [as eval] (domain.js:300:12)
//    at REPLServer.<anonymous> (repl.js:412:12)
//    at emitOne (events.js:82:20)
//    at REPLServer.emit (events.js:169:7)
//    at REPLServer.Interface._onLine (readline.js:210:10)
//    at REPLServer.Interface._line (readline.js:549:8)
//    at REPLServer.Interface._ttyWrite (readline.js:826:14)

console.warn([data][, ...args])#

中英对照提交修改

console.warn() 函数是 console.error() 的一个别名。

仅用于调试的方法#

暂无中英对照

The following methods are exposed by the V8 engine in the general API but do not display anything unless used in conjunction with the inspector (--inspect flag).

console.markTimeline([label])#

暂无中英对照

This method does not display anything unless used in the inspector. The console.markTimeline() method is the deprecated form of console.timeStamp().

console.profile([label])#

暂无中英对照

This method does not display anything unless used in the inspector. The console.profile() method starts a JavaScript CPU profile with an optional label until console.profileEnd() is called. The profile is then added to the Profile panel of the inspector.

console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.

console.profileEnd([label])#

暂无中英对照

This method does not display anything unless used in the inspector. Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector. See console.profile() for an example.

If this method is called without a label, the most recently started profile is stopped.

console.timeStamp([label])#

暂无中英对照

This method does not display anything unless used in the inspector. The console.timeStamp() method adds an event with the label 'label' to the Timeline panel of the inspector.

console.timeline([label])#

暂无中英对照

This method does not display anything unless used in the inspector. The console.timeline() method is the deprecated form of console.time().

console.timelineEnd([label])#

暂无中英对照

This method does not display anything unless used in the inspector. The console.timelineEnd() method is the deprecated form of console.timeEnd().