El registro puede ser una herramienta invaluable para solucionar problemas y analizar el uso de la aplicación. Estos paquetes ayudan a que sea un proceso sencillo.

El registro adecuado es un aspecto crítico de la creación y el mantenimiento de aplicaciones web funcionales. Puede ayudarlo a rastrear errores, diagnosticar problemas de rendimiento y comprender cómo los usuarios interactúan con su aplicación.

Node.js tiene muchos paquetes de registro para ayudarlo a crear y administrar registros estructurados. Aquí explorará los principales paquetes de registro actualmente disponibles en el ecosistema de Node.js y cómo usarlos.

1. Winston

Winston es una biblioteca de Node.js que proporciona una funcionalidad de registro flexible, incluidos varios transportes. Un "transporte" es un medio de almacenamiento para sus registros.

Winston admite transportes de consola, archivo y red. Esto significa que puede imprimir sus registros en la consola, escribirlos en un archivo o enviarlos a través de una red. Con los niveles de registro de Winston, puede crear transportes personalizados y filtrar registros según la gravedad.

instagram viewer

Puede instalar Winston como una dependencia en el directorio de su proyecto usando npm, el administrador de paquetes de JavaScript. Ejecute este comando:

npm instalar winston

El bloque de código a continuación demuestra cómo configurar un sistema de registro básico usando Winston. Puede definir registros para diferentes ubicaciones y diferentes niveles de gravedad.

constante Winston = requerir("winston");

// Registrador Winston
constante registrador = winston.createLogger({
nivel: 'información',
formato: winston.formato.json(),
predeterminadoMeta: { servicio: 'mi-servicio' },
transportes: [
nuevo transportes.winston. Consola(),
nuevo transportes.winston. Archivo({ Nombre del archivo: 'registro de errores', nivel: 'error' }),
nuevo transportes.winston. Archivo({ Nombre del archivo: 'combinado.log' })
]
});

registrador.info(—¡Hola, Winston!);
registrador.advertir('Advertencia: algo puede estar mal.');
registrador.error('Ocurrió un error.');

Este código configura un registrador con tres transportes. El primero es un transporte de consola, que generará mensajes de registro en la consola. El segundo es un transporte de archivos que escribirá registros con un nivel de "error" en un archivo "error.log". El tercero es un transporte de archivos que escribirá todos los registros en un archivo "combined.log".

El registrador está configurado para iniciar sesión en el nivel de "información" de forma predeterminada e incluye un objeto de metadatos predeterminado con un campo de "servicio" establecido en "mi servicio".

Luego, el código registra tres mensajes usando el registrador en los niveles de "información", "advertencia" y "error", respectivamente. Estos mensajes se enviarán a la consola y a los archivos de registro correspondientes según la configuración de los transportes.

2. morgan

Morgan es un middleware de registro para Node.js que proporciona capacidades básicas de registro de solicitudes. Está diseñado para ser ligero y fácil de usar. Morgan funciona interceptando solicitudes HTTP y registrando información relevante, como el método de solicitud, la URL, el código de estado, etc.

Uno de los beneficios clave de Morgan es su simplicidad. Puede agregarlo a una aplicación Node.js con unas pocas líneas de código, ya que no requiere configuración adicional para configurar.

Morgan admite múltiples formatos de registro, incluido el común, conjunto, corto, diminuto, y desarrollador formatos, permitiéndole elegir el que mejor se adapte a sus necesidades.

Puede instalar Morgan como una dependencia en el directorio de su proyecto ejecutando este comando:

npm instalar morgan

Este código muestra cómo usar Morgan en una aplicación Express:

constante expresar = requerir("expresar");
constante morgan = requerir("morgan");
constante aplicación = expreso();

aplicación.use (morgan("desarrollador"));

aplicación.obtener("/", (requerido, res) => {
res.enviar("¡Hola Mundo!");
});

aplicación.escuchar(3000, () => consola.registro(`Aplicación iniciada`));

El código inicializa a Morgan usando el desarrollador formato. Cuando realiza una solicitud GET a la ruta raíz (/), Morgan registra los detalles de esa solicitud en la consola.

A pesar de su simplicidad, Morgan es un poderoso paquete de registro que brinda capacidades esenciales de registro de solicitudes para las aplicaciones de Node.js.

3. pino

Pino es un paquete de registro ligero y popular para aplicaciones Node.js que cuenta con un rendimiento rápido y una sobrecarga baja, como se indica en sus puntos de referencia.

Pino admite múltiples tipos de transporte, fácilmente ampliables con transportes personalizados. Una de las características clave de Pino es su capacidad para registrar mensajes con formato JSON, lo que los hace fáciles de interpretar y analizar.

El uso de Pino varía según el marco Node.js; puede instalar Pino como una dependencia en el directorio de su proyecto Express ejecutando el siguiente comando:

npm instalar pino-http

Para diferentes marcos, verifique el documentación de pino.

Este bloque de código muestra el uso de Pino en una aplicación Express:

constante expresar = requerir("expresar");
constante aplicación = expreso();
constante pino = requerir('pino-http')()

app.uso (pino)

aplicación.obtener("/", (requerido, res) => {
pino (requerido, res) // registra solicitud y respuesta
req.log.info('ruta raíz') // registra información adicional
res.enviar("¡Hola Mundo!");
});

aplicación.escuchar(3000, () => consola.registro(`Aplicación iniciada`));

Este código inicializa Pino y lo registra como middleware. Cuando realiza una solicitud GET a la ruta raíz (/), Pino registra los detalles de su solicitud y su respuesta en la consola.

4. Depurar

Debug es un paquete de registro para Node.js modelado a partir de la técnica de depuración del núcleo de Node.js. Proporciona una solución de registro liviana que le permite habilitar o deshabilitar el registro de forma selectiva sin modificar el código, lo que facilita la depuración y la solución de problemas.

La depuración también le permite establecer espacios de nombres de registros, que brindan una estructura jerárquica a sus registros en función de los componentes y módulos de su aplicación, lo que facilita filtrarlos y buscarlos. Además, Debug ofrece varios niveles de registro, como error, advertencia e información, que puede usar para priorizar y filtrar sus registros.

Puede instalar Debug como una dependencia en el directorio de su proyecto con este comando:

depuración de instalación de npm

Este código muestra el uso de Debug en una aplicación Express:

constante expresar = requerir('expresar');

// Importar depuración y crear espacio de nombres
constante depurar = requerir('depurar')('miaplicación: servidor');

constante aplicación = expreso();
constante puerto = proceso.env. PUERTO || 3000;

aplicación.obtener('/', (requerido, res) => {
depurar('Solicitud recibida para /');
res.enviar('¡Hola Mundo!');
});

app.listen (puerto, () => {
depurar(`Servidor escuchando en el puerto ${puerto}`);
});

El código crea un espacio de nombres, mi aplicación: servidor. Este espacio de nombres distinguirá los registros relacionados con su "servidor” de los asociados con otros módulos con un espacio de nombres diferente en su aplicación.

Ejecute este comando para iniciar la depuración:

DEBUG=miaplicación:* nodo servidor.js

Este comando anterior coincidirá con cualquier mensaje de registro con un espacio de nombres que comience con miaplicación:. Si solo desea ver los registros relacionados con su servidor módulo, puede configurar el DEPURAR variable de entorno a mi aplicación: servidor.

Otra ventaja de Debug es su compatibilidad con otros paquetes de registro, como Winston.

Elegir un paquete de registro

Elegir un paquete de registro es una decisión importante que puede afectar significativamente la eficiencia y la eficacia de su proceso de depuración. Es esencial considerar factores tales como las características y capacidades del paquete, su compatibilidad con su lenguaje de programación y entorno de desarrollo, y su facilidad de uso y configuración.

En última instancia, la elección del paquete de registro dependerá de las necesidades y los requisitos específicos de su proyecto.