diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-03-17 12:53:09 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-04-12 23:23:55 +0200 |
commit | ce58df58d0360779d16d60ce3bb0e9979ec5fdf4 (patch) | |
tree | 74428887af79688570649d44da4973bece5ab612 | |
parent | 65765989d3d15e9d38dea8297c9c803df03eeb34 (diff) | |
download | android-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.tar.gz android-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.tar.bz2 android-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.zip |
console: allow `options` object as constructor arg
PR-URL: https://github.com/nodejs/node/pull/19372
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r-- | doc/api/console.md | 17 | ||||
-rw-r--r-- | lib/console.js | 27 |
2 files changed, 32 insertions, 12 deletions
diff --git a/doc/api/console.md b/doc/api/console.md index db3a903eaf..99c31df242 100644 --- a/doc/api/console.md +++ b/doc/api/console.md @@ -79,17 +79,22 @@ const { Console } = console; ``` ### new Console(stdout[, stderr][, ignoreErrors]) +### new Console(options) <!-- YAML changes: - version: v8.0.0 pr-url: https://github.com/nodejs/node/pull/9744 description: The `ignoreErrors` option was introduced. + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/19372 + description: The `Console` constructor now supports an `options` argument. --> -* `stdout` {stream.Writable} -* `stderr` {stream.Writable} -* `ignoreErrors` {boolean} Ignore errors when writing to the underlying streams. - Defaults to `true`. +* `options` {Object} + * `stdout` {stream.Writable} + * `stderr` {stream.Writable} + * `ignoreErrors` {boolean} Ignore errors when writing to the underlying + streams. **Default:** `true`. Creates a new `Console` with one or two writable stream instances. `stdout` is a writable stream to print log or info output. `stderr` is used for warning or @@ -99,7 +104,7 @@ error output. If `stderr` is not provided, `stdout` is used for `stderr`. const output = fs.createWriteStream('./stdout.log'); const errorOutput = fs.createWriteStream('./stderr.log'); // custom simple logger -const logger = new Console(output, errorOutput); +const logger = new Console({ stdout: output, stderr: errorOutput }); // use it like console const count = 5; logger.log('count: %d', count); @@ -110,7 +115,7 @@ The global `console` is a special `Console` whose output is sent to [`process.stdout`][] and [`process.stderr`][]. It is equivalent to calling: ```js -new Console(process.stdout, process.stderr); +new Console({ stdout: process.stdout, stderr: process.stderr }); ``` ### console.assert(value[, ...message]) diff --git a/lib/console.js b/lib/console.js index 456c0cc439..9557b27fbc 100644 --- a/lib/console.js +++ b/lib/console.js @@ -51,16 +51,28 @@ const { // Track amount of indentation required via `console.group()`. const kGroupIndent = Symbol('groupIndent'); -function Console(stdout, stderr, ignoreErrors = true) { +function Console(options /* or: stdout, stderr, ignoreErrors = true */) { if (!(this instanceof Console)) { - return new Console(stdout, stderr, ignoreErrors); + return new Console(...arguments); } + + let stdout, stderr, ignoreErrors; + if (options && typeof options.write !== 'function') { + ({ + stdout, + stderr = stdout, + ignoreErrors = true + } = options); + } else { + stdout = options; + stderr = arguments[1]; + ignoreErrors = arguments[2] === undefined ? true : arguments[2]; + } + if (!stdout || typeof stdout.write !== 'function') { throw new ERR_CONSOLE_WRITABLE_STREAM('stdout'); } - if (!stderr) { - stderr = stdout; - } else if (typeof stderr.write !== 'function') { + if (!stderr || typeof stderr.write !== 'function') { throw new ERR_CONSOLE_WRITABLE_STREAM('stderr'); } @@ -369,7 +381,10 @@ Console.prototype.table = function(tabularData, properties) { return final(keys, values); }; -module.exports = new Console(process.stdout, process.stderr); +module.exports = new Console({ + stdout: process.stdout, + stderr: process.stderr +}); module.exports.Console = Console; function noop() {} |