Node.js Personalizar clase de consola

La clase Console se puede usar para crear un registrador con flujos de salida configurables y el uso básico se describe en el nuevo método Console() de Node.js. Pero como puede observar, algunas opciones solo permiten valores booleanos como entrada. 

Por ejemplo, habilitar colorMode es útil cuando tiene varios datos de salida. Node.js proporciona una configuración bastante útil para mostrar los registros de la consola. Sin embargo, en algunas situaciones, es posible que aún desee modificarlo para que se ajuste a sus necesidades sin instalar ningún paquete adicional.

En este artículo, primero veremos cómo utilizar inspectOptions para otras configuraciones avanzadas de la clase Console y luego explicaremos cómo modificar los detalles de colorMode .

Ejemplo 1: uso de la clase de consola predeterminada. La forma en que muestra los datos es la misma que la de la consola global, es decir, 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]));

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

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 }

Ejemplo 2: Si no tenemos suficiente espacio para mostrar todo y queremos que sea más corto y bien organizado. Especificaremos los siguientes atributos en el objeto inspectOptions y los adjuntaremos a las opciones de la consola.

  • maxArrayLength: se utiliza para especificar el número máximo de elementos de Array que se incluirán al formatear. Predeterminado: 100.
  • maxStringLength: Se utiliza para especificar el número máximo de caracteres a incluir al formatear. Predeterminado: 10000.
  • ordenado: si se establece en verdadero, se utiliza la ordenación predeterminada y si se establece en una función, se utiliza como una función de comparación.

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]));

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

log: object { attr: ‘string content ab c’… 16 caracteres más }
log: array [ ‘array_value1’, ‘array_value2’, ‘array_value3’,… 2 elementos más]
log: set Set(5) { 1, 2, 3, 4, 5}

Explicación: si echó un vistazo a los parámetros aceptados de inspectOptions , hay uno llamado colors . Este parámetro tiene una prioridad más alta que colorMode en la clase Console . Si se establece inspectOptions.colors, se ignora colorMode . Nuevamente, solo permite valores booleanos. Es decir, acepta verdadero o falso. Esto puede ser decepcionante, pero aquí hay una solución si solo hay 1 registrador para manejar a la vez. 

Ejemplo 3: podemos modificar la configuración predeterminada en util.inspect.styles como el código de muestra a continuación. ( Aquí está la lista de todos los valores aceptables para cada tipo de datos). Tenga en cuenta que este es un enfoque para modificar el esquema de color global. Una vez que se aplica el cambio, todos los demás componentes que habilitan el modo de color y siguen este esquema de color se ven afectados. 

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]));

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

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

Referencia: https://nodejs.org/api/util.html#util_customizing_util_inspect_colors

Publicación traducida automáticamente

Artículo escrito por ishuen y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *