控制台是一个基于文本的用户界面,允许您与计算机的操作系统进行交互或运行代码。使用控制台,您可以编写和执行命令或程序。它还用于调试和故障排除。内置的 Node.js 库包括 Console 模块。它提供了将消息打印到 IO 流的功能,该功能类似于 Web 浏览器提供的 JavaScript 控制台机制。
控制台模块的功能有两个主要部分 -
控制台类:控制台类方法为 console.log()、console.error() 和 console.warn(),用于显示流 Node.js。
全局控制台对象:一个预定义的对象,用于将日志记录、错误和警告消息回显到标准输出流。它在不调用 require('console') 的情况下使用。
全局控制台对象的默认用法很简单。以下代码显示了全局控制台对象的典型用法,用于显示日志记录、错误和警告消息。
例
// 欢迎信息
console.log('Welcome to qikepu.com!');
// Hello world 消息
console.log('hello world');
// 打印到错误流
console.error(new Error('Oops... something went wrong'));
// 打印警告
const name = 'NodeJS Tutorial';
console.warn(`Warning ${name}! Warning!`);
输出
hello world
Error: Oops... something went wrong
at Object.<anonymous> (D:\nodejs\emailapp\main.js:11:15)
at Module._compile (node:internal/modules/cjs/loader:1241:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
at node:internal/main/run_main_module:23:47
Warning NodeJS Tutorial! Warning!
您还可以通过指定用于反映输出和错误日志的流来自定义控制台对象。声明 Console 类的对象,并将流对象作为参数传递。
下面的程序将日志和错误重定向到两个磁盘文件。
const fs = require('fs');
const out = fs.createWriteStream('./stdout.log');
const err = fs.createWriteStream('./stderr.log');
const logger = new console.Console(out, err);
// 欢迎信息
logger.log('Welcome to qikepu.com!');
// Hello world 消息
logger.log('hello world');
// 打印到错误流
logger.error(new Error('Oops... something went wrong'));
// 打印警告
const name = 'NodeJS Tutorial';
logger.warn(`Warning ${name}! Warning!`);
这将在当前目录中创建两个文件 stdout.log 和 stderr.log,并在其中保存控制台对象的 log()、error() 和 warn() 方法的结果。
控制台方法
以下是可用于控制台对象的方法列表。
方法 | 描述 |
---|---|
console.log([data][, ...]) |
使用换行符打印到 stdout。此函数可以以类似 printf() 的方式接受多个参数。 |
console.info([data][, ...]) |
使用换行符打印到 stdout。此函数可以以类似 printf() 的方式接受多个参数。 |
console.error([data][, ...]) |
使用换行符打印到 stderr。此函数可以以类似 printf() 的方式接受多个参数。 |
console.warn([data][, ...]) |
使用换行符打印到 stderr。这个函数可以以类似printf()的方式接受多个参数 |
console.dir(obj[, options]) |
在 obj 上使用 util.inspect 并将生成的字符串打印到 stdout。 |
console.time(label) |
标签时间。 |
console.timeEnd(label) |
完成计时器,记录输出。 |
console.trace(message[, ...]) |
打印到 stderr 'Trace :',然后将格式化的消息和堆栈跟踪到当前位置。 |
console.assert(value[, message][, ...]) |
类似于 assert.ok(),但错误消息的格式为 util.format(message...)。 |