Console

最后更新于:2022-04-01 01:58:20

### 稳定度: 2 - 稳定 这个模块定义了一个控制台类,并且暴露了一个`console`对象。 `console`对象是一个特殊的`Console`实例,它的输出被传至`stdout`或`stderr`。 为了使用的方便,`console`被定义为一个全局对象,不需要通过`require`就可直接使用。 #### console - Object 用来向`stdout`和`stderr`打印信息。与大多数浏览器提供的`console`对象的功能类似,只是这里输出被传至`stdout`或`stderr`。 当目的地是终端或文件时(为了避免过早退出丢失信息),`console`函数时同步的。当目的地是管道时(为了避免长时间阻塞),`console`函数时异步的。 下面的例子里,`stdout`是非阻塞的,`stderr`是阻塞的: ~~~ $ node script.js 2> error.log | tee info.log ~~~ 日常使用时,除了你需要记录大量数量的数据,你不用担心阻塞/非阻塞。 #### console.log([data][, ...]) 向`stdout`打印一行新信息。这个函数可以像`printf()`那样接受多个参数,例子: ~~~ var count = 5; console.log('count: %d', count); // prints 'count: 5' ~~~ 如果第一个字符串中没有发现格式化元素,那么`util.inspect`将被应用到各个参数。详情参阅`util.format()`。 #### console.info([data][, ...]) 与`console.log`相同。 #### console.error([data][, ...]) 与`console.log`相同。但是输出至`stderr`。 #### console.warn([data][, ...]) 与`console.err`相同。 #### console.dir(obj[, options]) 对`obj`调用`util.inspect`并且将结果字符串输出至`stdout`。这个函数会忽略`obj`上的任何自定义`inspect()`函数。一个可选的`options`参数可以被传递用来格式化字符串的某些方面: - showHidden - 如果为`true`,`object`的不可枚举和标志属性也会被显示。默认为`false`。 - depth - 告诉`inspect`在格式化对象时递归多少次。在检查大而复杂的对象时很有用。默认为2。若要递归到底则传递`null`。 - colors - 如果为`true`,那么输出会以ANSI颜色码的形式输出。默认为`false`。颜色是可以自定义,参阅下文。 #### console.time(label) 被用来计算指定操作之间时间间隔。为了开始一个`timer`,调用`console.time()`方法,作为唯一参数可以给它一个名字。为了关闭一个`timer`,并且得到毫秒间隔,仅仅以相同的名字参数调用一次`console.timeEnd()`。 #### console.timeEnd(label) 停止一个之前通过`console.time()`开启的`timer`,并且向控制台打印结果。 例子: ~~~ console.time('100-elements'); for (var i = 0; i < 100; i++) { ; } console.timeEnd('100-elements'); // prints 100-elements: 262ms ~~~ #### console.trace(message[, ...]) 向`stderr`打印`'Trace :'`,跟随着格式化信息和堆栈信息。 #### console.assert(value[, message][, ...]) 与`assert.ok()`类似,但是错误信息被像`util.format(message...)`一样格式化。 #### Class: Console 使用`require('console')`后。`Console`或`console.Console`可以取得这个类。 ~~~ var Console = require('console').Console; var Console = console.Console; ~~~ 你可以调用`Console`类来自定义如`console`一样的简单日记记录器,但是有不同的输出流。 #### new Console(stdout[, stderr]) 通过传递一个或两个可写流实例,创建一个新的`Console`。`stdout`是一个用来打印日志和信息的输出流。`stderr`是一个被用来打印警告和错误输出的。如果`stderr`没有被传递,那么警告和错误信息将被传递至`stdout`。 ~~~ var output = fs.createWriteStream('./stdout.log'); var errorOutput = fs.createWriteStream('./stderr.log'); // custom simple logger var logger = new Console(output, errorOutput); // use it like console var count = 5; logger.log('count: %d', count); // in stdout.log: count 5 ~~~ 全局的`console`是一个特殊的`Console`实例,它的输出被传递至`process.stdout`和`process.stderr`: ~~~ new Console(process.stdout, process.stderr); ~~~
';