"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Registro avanzado de API de Node.js con Winston y Morgan

Registro avanzado de API de Node.js con Winston y Morgan

Publicado el 2024-07-31
Navegar:684

Advanced Node.js API Logging with Winston and Morgan

El registro es una parte crucial de cualquier aplicación, ya que proporciona información sobre el comportamiento de la aplicación, ayuda a depurar problemas y monitorea el rendimiento. En una API de Node.js, se puede lograr un registro avanzado utilizando bibliotecas como Winston y Morgan. Este artículo lo guiará a través de la configuración y el uso de Winston and Morgan para el inicio de sesión avanzado en una API de Node.js.

Por qué se requiere el registro avanzado
El registro avanzado es esencial por varios motivos:

  • Depuración y solución de problemas: los registros proporcionan un historial detallado de los eventos de la aplicación, lo cual es invaluable al diagnosticar problemas. Ayudan a identificar la causa raíz de los errores y a comprender la secuencia de acciones que conducen a un problema.

  • Monitoreo y mantenimiento: el monitoreo continuo de registros permite a los desarrolladores realizar un seguimiento del estado y el rendimiento de la aplicación. Al analizar los registros, puede detectar anomalías, cuellos de botella en el rendimiento y problemas potenciales antes de que se vuelvan críticos.

  • Auditoría y cumplimiento: para muchas aplicaciones, especialmente aquellas que manejan datos confidenciales, mantener registros detallados es un requisito de cumplimiento. Los registros proporcionan un registro de las acciones del usuario y los cambios en el sistema, lo que puede ser fundamental para las auditorías y el cumplimiento normativo.

  • Seguridad: registrar eventos relacionados con la seguridad, como intentos fallidos de inicio de sesión, acceso no autorizado y actividades sospechosas, es crucial para detectar y responder a amenazas de seguridad. El registro avanzado ayuda a mantener un entorno de aplicaciones seguro.

Tabla de contenido

  1. Introducción a Winston y Morgan
  2. Configurando un proyecto Node.js
  3. Instalando Winston y Morgan
  4. Configuración de Winston para el registro avanzado
  5. Integración de Morgan para el registro de solicitudes HTTP
  6. Combinando a Winston y Morgan
  7. Personalizar formatos de registro
  8. Registro en diferentes transportes
  9. Manejo y registro de errores
  10. Conclusión

1.Introducción a Winston y Morgan
Winston es una biblioteca de registro versátil y fácil de usar para Node.js. Admite múltiples transportes para mensajes de registro, lo que significa que puede iniciar sesión en diferentes ubicaciones (consola, archivos, servidores remotos, etc.) con varios formatos y niveles.

Morgan es un middleware de registro de solicitudes HTTP para Node.js. Simplifica el registro de solicitudes HTTP en un formato predefinido, lo que puede resultar muy útil para realizar un seguimiento de las solicitudes entrantes y las respuestas en una API.

2.Configuración de un proyecto de Node.js
Primero, crea un nuevo proyecto Node.js si aún no tienes uno:

mkdir node-api-logging
cd node-api-logging
npm init -y

3.Instalando Winston y Morgan
Instale Winston y Morgan junto con Express (para configurar una API básica):

npm install express winston morgan

4.Configuración de Winston para el registro avanzado
Cree un archivo logger.js para configurar Winston:

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;

5. Integración de Morgan para el registro de solicitudes HTTP
Cree un archivo middleware/logger.js para integrar Morgan con Winston:

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;

6.Combinando Winston y Morgan
Integre Winston y Morgan en su aplicación Express:

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});

7.Personalizar formatos de registro
Puede personalizar los formatos de registro en Winston y Morgan. Por ejemplo, es posible que desee registrar detalles adicionales de la solicitud, como encabezados, parámetros de consulta o tiempos de respuesta.

8. Registro en diferentes transportes
Winston admite varios transportes. Puede iniciar sesión en diferentes destinos según la gravedad de los mensajes. Por ejemplo, es posible que desees enviar registros de errores a un servidor de registro remoto o a un servicio de terceros como Loggly o Papertrail.

9.Manejo y registro de errores
El manejo y registro de errores adecuados son esenciales para identificar y resolver problemas. Asegúrese de que su middleware de manejo de errores registre información detallada del error utilizando Winston.

10.Conclusión
Al combinar Winston y Morgan, puede lograr un registro avanzado en su API de Node.js. Winston proporciona un marco sólido para registrar eventos a nivel de aplicación, mientras que Morgan simplifica el registro de solicitudes HTTP. Juntos, le brindan una solución de registro integral que mejora su capacidad para monitorear y depurar su aplicación.

Descripción general del código final
Aquí hay un resumen rápido de los archivos y su contenido:

  • logger.js: Configura Winston con formato y transportes personalizados.
  • middleware/logger.js: integra Morgan con Winston.
  • app.js: configura la aplicación Express, integrando Winston y Morgan. Con esta configuración, puede registrar y monitorear de manera efectiva su API de Node.js, lo que facilita su mantenimiento y depuración.
Declaración de liberación Este artículo se reproduce en: https://dev.to/dev_habib_nuhu/advanced-nodejs-api-logging-with-winston-and-morgan-4fb1?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3