• Node.js Video Tutorials

NodeJS - 新建 Console() 方法



Node.js 的 Console 模块提供了一个简单的调试控制台,它与 Web 浏览器提供的 JavaScript 控制台机制相同。Node.js 的 new Console() 方法用于创建一个新的控制台对象,以将输出打印到 stdout 流,该流可以通过全局 process 对象的 process.stdout 属性访问。console 对象提供了诸如 log()、error()、warn() 和 info() 等方法,允许开发人员以简单有效的方式将消息写入标准输出。它还包括其他功能,例如分组和计数,允许代码执行计时等,使其成为调试用 Node.js 编写的应用程序的宝贵工具。

console 模块有两个组成部分,如下所述。

  • Console 类可以使用一些方法写入任何 Node.js 流。这些方法包括 console.log()、console.error() 和 console.warn() 等。

  • 全局 console 类实例配置为写入 process.stdout(此属性返回连接到 stdout 的流)和 process.stderr(此属性返回连接到 stderr 的流)。无需使用 require('console'),即可使用全局 console。

Node.js 的 new Console() 方法将创建一个新的 Console,并包含一个或两个可写流实例,它们分别是 stdoutstderrstdout 是一个可写流,将用于打印日志或信息输出。

stderr 用于警告和错误输出。如果未提供 stderr,则 stdout 将用作 stderr

语法

以下是 Node.js new Console() 方法的语法:

new console(options);

此方法接受多个参数。

参数

options <object>

  • stdout <stream.Writable> - 这将接受从 fs 模块导入的可写流。

  • stderr <stream.Writable> - 这也将接受从 fs 模块导入的可写流。

  • ignoreErrors <boolean> - 这将忽略写入底层流时的错误,默认值为 true

  • colorMode <boolean> | <string> - 用于设置此 Console 实例的颜色支持。如果值为 true,则在检查值时启用颜色。如果值为 false,则在检查值时禁用颜色。默认值为 auto

  • inspectOptions <Object> - 这将指定传递给 util.inspect() 的选项。

  • groupIndentation <number> - 用于设置组缩进。默认值为 2。

返回值

  • 执行后,输出将通过 <stream.Writable> 发送到 fs 模块创建的 process.stdout 和 process.stderr 文件。

此方法仅在 options 为对象时才接受 options。为了更好地理解这一点,请查看下面的代码片段。

new Console({
   stdout: WritableStream,
   stderr: WritableStream,
   colorMode: true,
   groupIndentation: 3,
}); 

首先,我们需要使用 (new Console()) 方法创建一个控制台,并在编写代码时需要导入两个模块。这两个模块是 Node.js 的 console 和 fs。

现在让我们深入了解 Node.js 的 new Console() 方法的示例。

示例

在下面的示例中,

  • 我们导入了两个模块 consolefs,并创建了两个输出流 (stdout 和 stderr)。

  • 然后我们创建了 new 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 = "Tutorialspoint";
obj.log('Welcome to %s', name);
obj.warn('This is a warning text');
obj.error('This is an Error text');

输出

打开命令提示符并导航到文件 (Nodefile.js) 所在的文件夹,如下图所示。

file_exists

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

file_execute

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

two_files

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

notepad_file

如果我们尝试打开 (stdout.log) 文件,它将包含 obj.log() 的消息。

stdout_log

示例

在下面的示例中,

  • 我们导入了两个模块 console 和 fs,并且只创建了一个输出流,即 stdout。

  • 然后我们创建了 new 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) 所在的文件夹,如下图所示。

nodejs_file

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

execute_nodejs_file

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

stdout_log_file

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

注意 - stderr 用于警告和错误输出。在这种情况下,未提供 stderr,则 stdout 将用作 stderr。

notepad_stdout_log
nodejs_console_module.htm
广告