Node.js自定义Console类

Node.js自定义Console类

Console类可用于创建具有可配置输出流的日志记录器,基本用法在Node.js的new Console()方法中有描述。但你可能会注意到,某些选项只允许布尔值作为输入。

例如,启用 colorMode 对于具有不同输出数据时是很有用的。Node.js提供了非常方便的设置来显示控制台日志。然而,在某些情况下,您可能仍希望修改它以适应您的需求,而无需安装任何其他软件包。

在本文中,我们首先将介绍如何利用 inspectOptions 来进行Console类的其他高级设置,然后解释如何修改 colorMode 的详细信息。

示例1: 使用默认的Console类。它展示数据的方式与全局控制台一致,即console.log。

index.js

const { Console } = require('console'); 
  
const logger = new Console({ 
    stdout: process.stdout, 
    stderr: process.stderr, 
}); 
  
logger.log('log: object', {attr:  
    'string content a b c d e f g h i j k'}); 
logger.log('log: array', ['array_value1', 'array_value2',  
'array_value3', 'array_value4', 'array_value5']); 
logger.log('log: set', new Set([3, 1, 2, 5, 4]));
JavaScript

使用以下命令运行 index.js 文件:

node index.js
JavaScript

输出:

log: object { attr: 'string content a b c d e f g h i j k' }
log: array [
  'array_value1',
  'array_value2',
  'array_value3',
  'array_value4',
  'array_value5'
]
log: set Set(5) { 3, 1, 2, 5, 4 }
JavaScript

示例2: 如果我们没有足够的空间来显示所有内容,并希望内容更短和更有组织性。我们会在 inspectOptions 对象中指定以下属性,并将其附加到控制台选项中。

  • maxArrayLength: 用于指定在格式化时包括的数组元素的最大数量。默认值:100。
  • maxStringLength: 用于指定在格式化时包括的字符的最大数量。默认值:10000。
  • sorted: 如果设置为true,则使用默认排序;如果设置为函数,则将其用作比较函数。

index.js

const { Console } = require('console'); 
  
const logger = new Console({ 
    stdout: process.stdout, 
    stderr: process.stderr, 
    inspectOptions: { 
  
        // Maximum number of Array elements  
        // to include when formatting. 
        maxArrayLength: 3,  
  
        // Maximum number of characters to  
        // include when formatting. 
        maxStringLength: 10,  
  
        // If properties of an object are sorted 
        sorted: true, 
    } 
}); 
  
logger.log('log: object', {attr:  
        'string content a b c d e f g h i j k'}); 
logger.log('log: array', ['array_value1', 'array_value2',  
'array_value3', 'array_value4', 'array_value5']); 
logger.log('log: set', new Set([3, 1, 2, 5, 4]));
JavaScript

使用以下命令运行 index.js 文件:

node index.js
JavaScript

输出:

log: object { attr: '字符串内容a b c' 还有16个字符 }   
log: array [ 'array_value1', 'array_value2', 'array_value3',  还有2个项 ]   
log: set Set(5) { 1, 2, 3, 4, 5 } 
Bash

说明: 如果你查看了 inspectOptions 接受的参数,其中有一个叫做 colors . 这个参数的优先级高于 Console类中的colorMode . 如果设置了 inspectOptions.colors ,就会忽略 colorMode . 同样,它只允许布尔值。也就是说,它接受true或false。这可能令人失望,但是如果一次只有一个日志记录器,下面是一个解决方法。

示例3: 我们可以修改 util.inspect.styles 中的默认设置,如下所示的示例代码。 ( 这 是每种数据类型可接受的所有值的列表)。请注意,这是一种修改全局颜色方案的方法。一旦应用了更改,所有启用颜色模式并遵循此颜色方案的其他组件都会受到影响。

index.js

const { Console } = require('console'); 
const util = require('util'); 
  
// This can be declared after the  
// logger is created, too. 
util.inspect.styles.number = 'red'; 
  
const logger = new Console({ 
    stdout: process.stdout, 
    stderr: process.stderr, 
    inspectOptions: { 
  
        // Remember to enable the color mode. 
        // Default is false. 
        colors: true
    } 
}); 
  
// Now the number in the set are all shown in red. 
logger.log('log: set', new Set([3, 1, 2, 5, 4]));
JavaScript

运行 index.js 文件,使用以下命令:

node index.js
JavaScript

输出:

log: set Set { 3, 1, 2, 5, 4 }
JavaScript

参考: https://nodejs.org/api/util.html#util_customizing_util_inspect_colors

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册