Node.js 的 Node.js Console 模块提供了一个简单的调试控制台,该控制台与 Web 浏览器提供的 JavaScript 控制台机制相同。Node.js新的 Console() 方法用于创建一个新的控制台对象,以将输出打印到 stdout 流,可以使用全局进程对象的 process.stdout 属性访问该流。控制台对象提供了 log()、error()、warn() 和 info() 等方法,使开发人员能够以简单高效的方式将消息写入标准输出。它还包括其他功能,如分组和计数、允许代码执行计时等,使其成为调试用 Node.js编写的应用程序的宝贵工具。
控制台模块有两个组件,如下所述。
- Console 类可以使用某些方法写入任何Node.js流。这些方法有 console.log()、console.error() 和 console.warn() 等。
- 配置为写入 process.stdout(此属性返回连接到 stdout)和 process.stderr(此属性返回连接到 stdout 的流)的全局控制台类实例。在不使用 require('console') 的情况下,可以使用全局控制台。
Node.js new Console() 方法将创建一个带有一个或两个可写流实例的新 Console,它们是 stdout 和 stderr。stdout 是一个可写的流,将用于打印日志或信息输出。
stderr 用于警告和错误输出。如果未给出 stderr,则 stdout 将用作 stderr。
语法
以下是Node.js新的 Console() 方法的语法 -
new console(options);
此方法接受大量参数的地方。
参数
选项 <object>
- stdout <stream.Writable> - 这将接受从 fs 模块导入的写入流。
- stderr <stream.Writable> - 这也将接受从 fs 模块导入的写入流。
- ignoreErrors<boolean> - 这将在写入底层流时忽略错误,默认情况下,该值为true。
- colorMode <boolean> |<string> - 这用于设置此控制台实例的颜色支持。如果该值作为 true 传递,则在检查值时启用着色。如果该值作为 false 传递,则在检查值时将禁用着色。默认情况下,该值将为 auto。
- inspectOptions <Object> - 这将指定传递给 util.inspect() 的选项。
- groupIndentation <number> - 用于设置组缩进。默认情况下,该值为 2。
- 输出将通过 <stream.Writable> 发送到 fs 模块创建的 process.stdout 和 process.stderr 执行。
此方法仅接受当它是对象时的选项。为了更好地理解这一点,请查看下面的代码片段。
new Console({
stdout: WritableStream,
stderr: WritableStream,
colorMode: true,
groupIndentation: 3,
});
首先,我们需要使用 (new Console()) 方法创建一个控制台,并且我们需要在编写代码时导入两个模块。这些模块是 Node.js 的 console 和 fs。
现在,让我们深入了解 Node.js 的新 Console() 方法的示例。
例在下面的示例中,
- 我们正在导入两个模块:console 和 fs,并且我们正在创建两个输出流(stdout 和 stderr)。
- 然后,我们正在创建新的 Console() 方法并向其传递一些参数。
- 然后我们调用 Console 类的一些方法。
const fs = require('fs');
const console = require('console');
const { Console } = console;
const output = fs.createWriteStream('./stdout.log');
const error = fs.createWriteStream('./stderr.log');
const obj = new Console({ stdout: output, stderr: error, colorMode: true, ignoreErrors: true});
const name = "qikepu";
obj.log('Welcome to %s', name);
obj.warn('This is a warning text');
obj.error('This is an Error text');
输出
打开命令提示符并导航到文件 (Nodefile.js) 所在的文件夹,如下图所示。

现在,通过在命令提示符中键入 (node Nodefile.js) 来执行该文件。

根据我们在文件中编写的代码,它将在存在 (Nodefile.js) 的同一文件中创建两个日志文件(stdout 和 stderr)

如果我们尝试打开 (stderr.log) 文件,它包含 obj.warn() 和 obj.error() 的消息。

如果我们尝试打开 (stdout.log) 文件,它包含 obj.log() 的消息。
例
在下面的示例中,
- 我们正在导入两个模块 console 和 fs,我们只创建一个输出流,即 stdout。
- 然后,我们正在创建新的 Console() 方法并传入一些参数。
- 然后我们调用 Console 类的一些方法。
const fs = require('fs');
const console = require('console');
const { Console } = console;
const output = fs.createWriteStream('./stdout.log');
const obj = new Console({ stdout: output, colorMode: true, ignoreErrors: true});
const name = "India vs Pakistan";
obj.log('Welcome to %s match', name);
obj.warn('This is a warning text');
obj.error('This is an Error text');
输出
打开命令提示符并导航到文件 (Nodefile.js) 所在的文件夹,如下图所示。

现在,通过在命令提示符中键入 (node Nodefile.js) 来执行该文件。

现在,根据我们在文件中编写的代码,它将在存在 (Nodefile.js) 的同一文件中只创建一个日志文件 stdout。

如果我们尝试打开 (stdout.log) 文件,它包含 obj.log()、obj.warn()、obj.error() 的消息。
注意: stderr 用于警告和错误输出。在这种情况下,没有给出 stderr,那么 stdout 将用作 stderr。
