jiexi
Version:
119 lines (73 loc) • 4.11 kB
Markdown
# Console#
### 稳定度: 2 - 稳定
这个模块定义了一个控制台类,并且暴露了一个`console`对象。
`console`对象是一个特殊的`Console`实例,它的输出被传至`stdout`或`stderr`。
为了使用的方便,`console`被定义为一个全局对象,不需要通过`require`就可直接使用。
#### console#
- Object
用来向`stdout`和`stderr`打印信息。与大多数浏览器提供的`console`对象的功能类似,只是这里输出被传至`stdout`或`stderr`。
当目的地是终端或文件时(为了避免过早退出丢失信息),`console`函数时同步的。当目的地是管道时(为了避免长时间阻塞),`console`函数时异步的。
下面的例子里,`stdout`是非阻塞的,`stderr`是阻塞的:
```SHELL
$ node script.js 2> error.log | tee info.log
```
日常使用时,除了你需要记录大量数量的数据,你不用担心阻塞/非阻塞。
#### console.log([data][, ...])#
向`stdout`打印一行新信息。这个函数可以像`printf()`那样接受多个参数,例子:
```js
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`,并且向控制台打印结果。
例子:
```js
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`可以取得这个类。
```js
var Console = require('console').Console;
var Console = console.Console;
```
你可以调用`Console`类来自定义如`console`一样的简单日记记录器,但是有不同的输出流。
#### new Console(stdout[, stderr])#
通过传递一个或两个可写流实例,创建一个新的`Console`。`stdout`是一个用来打印日志和信息的输出流。`stderr`是一个被用来打印警告和错误输出的。如果`stderr`没有被传递,那么警告和错误信息将被传递至`stdout`。
```js
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`:
```js
new Console(process.stdout, process.stderr);
```