NodeJS 中按需生成彩色控制台日志
我们在使用 JavaScript 时都会用到console.log控制台日志,无论是使用 React 等框架还是 NodeJS。以 NodeJS 为例,我们可以在终端中看到控制台日志输出。在console.log开发或部署过程中,我们有时会尝试添加或删除一些日志。
如果我们能够根据需要切换日志输出呢?
而且,如果还能添加颜色来区分不同的日志信息,岂不更好?
首先,我们创建一个简单的server.js文件。它看起来会像下面这样:
// Dependencies
const http = require('http');
//create a server:
const server = http.createServer((req, res) => {
console.log('Write response')
res.write('Hello NodeJS!') //write a response to the client
res.end() //end the response
console.log('Response ended.')
});
// start listening to the server
server.listen(8080, () => {
console.log('Node server is listening on 8080 port.')
});
我添加了一些额外的控制台消息作为解释。
现在,当我们使用命令启动服务器时node server.js,终端将输出如下所示的日志消息:
好吧!
现在,让我们修改server.js文件以启用按需日志记录。
首先,修改代码server.js。修改后的代码如下:
// Dependencies
const http = require('http');
const util = require('util');
const debugLog = util.debuglog('server');
//create a server:
const server = http.createServer((req, res) => {
debugLog('Write response');
res.write('Hello NodeJS!'); //write a response to the client
res.end(); //end the response
debugLog('Response ended.');
});
// start listening to the server
server.listen(8080, () => {
debugLog('Node server is listening on 8080 port.');
});
我们可以看到这里有一些变化。让我一步一步地解释一下。
- 首先,我添加了一条 require 语句来
Line 3导入。util - 在下一行(
Line 4),我创建了一个对debuglog使用的方法调用的引用util。这里需要注意的重要一点是函数调用中提供的参数:server。 - 最后,我们将
console.log语句替换为debugLog在以下情况下创建的变量:Line 4
更改完成后,如果我们使用node server.js命令运行服务器,则不会显示任何控制台输出。
那么,你肯定在想该如何显示日志吧?
要查看日志,我们需要稍微修改一下命令。新的命令语法如下NODE_DEBUG=server node server.js。请参考下面的截图:
我们可以从上图中观察到一些变化。让我们试着理解这些变化。
NODE_DEBUG=server-> 当我们将此项设置NODE_DEBUG为 true 时server,它只会记录与我们在初始化期间传递的键相关的消息util.debuglog('server')。这样,我们就可以在不同的文件中实现不同的按需日志记录。- 在输出结果的同时,它还会添加一个关键字。在上面的例子中,它添加了一个关键字
SERVER 10072:。这有助于我们理解这条日志属于应用程序的哪个部分,或者我们赋予了哪个关键字。这也是一种简洁明了的日志区分方式。:)
接下来是第二部分,我提到过要使用彩色控制台。通常,我们会console.log这样使用:
console.log('Hello console');
今后,请尝试这样使用它:
console.log('\x1b[36m%s\x1b[0m', 'Hello console');
输出结果如下:
这不是很酷吗?
我知道,需要稍微解释一下。第一个参数console.log指示终端更改文本颜色。而%s是日志消息的占位符。现在,要将颜色更改为不同的值,只需调整 前后的数字即可[。m在上面的示例中,我们可以将 更新36为31来获得红色版本。
这也适用于按需日志记录(如上所述)。我们可以得到类似下面的结果:
看起来很漂亮,对吧?
同样,我们也可以更改日志消息的背景色,而不是文本颜色。这里我提供一些参考值,请尝试一下。
Reset = "\x1b[0m"
Bright = "\x1b[1m"
Dim = "\x1b[2m"
Underscore = "\x1b[4m"
Blink = "\x1b[5m"
Reverse = "\x1b[7m"
Hidden = "\x1b[8m"
FgBlack = "\x1b[30m"
FgRed = "\x1b[31m"
FgGreen = "\x1b[32m"
FgYellow = "\x1b[33m"
FgBlue = "\x1b[34m"
FgMagenta = "\x1b[35m"
FgCyan = "\x1b[36m"
FgWhite = "\x1b[37m"
BgBlack = "\x1b[40m"
BgRed = "\x1b[41m"
BgGreen = "\x1b[42m"
BgYellow = "\x1b[43m"
BgBlue = "\x1b[44m"
BgMagenta = "\x1b[45m"
BgCyan = "\x1b[46m"
BgWhite = "\x1b[47m"
在上面的示例中,请将开头到m字母之间的内容替换为上述任意一个选项,并检查输出结果。欢迎在下方添加注释,提供一些美观的控制台输出信息以及所使用的代码。
感谢阅读。
学习愉快!
文章来源:https://dev.to/elanandkumar/on-demand-colorful-console-log-in-nodejs-1929



