Winston permite la rotación de logs mediante el paquete adicional winston-daily-rotate-file
. Este módulo facilita la creación de nuevos archivos de log basados en una frecuencia definida (diaria, semanal, etc.).
1. Instalación de dependencias:
Asegúrate de tener Winston y winston-daily-rotate-file
instalados en tu proyecto:
npm install winston winston-daily-rotate-file
2. Configuración del logger con rotación diaria:
Configura un transportador (transport) de winston-daily-rotate-file
para manejar los logs.
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
// Configuración del logger
const logger = winston.createLogger({
level: 'info', // Nivel mínimo de log a registrar
format: winston.format.combine(
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
winston.format.printf(info => `${info.timestamp} [${info.level.toUpperCase()}]: ${info.message}`)
),
transports: [
new DailyRotateFile({
filename: 'logs/application-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m', // Tamaño máximo del archivo de log
maxFiles: '14d', // Mantener archivos por 14 días
})
]
});
// Ejemplo de uso
logger.info('Este es un mensaje de log informativo.');
logger.error('Este es un mensaje de log de error.');
3. Parámetros importantes de configuración:
%DATE%
se reemplaza con la fecha.
Puedes combinar la rotación diaria con otros transportadores, como la consola:
logger.add(new winston.transports.Console({
format: winston.format.simple(),
}));
Para manejar diferentes niveles (e.g., info
, error
) en archivos separados:
logger.add(new DailyRotateFile({
filename: 'logs/error-%DATE%.log',
level: 'error',
datePattern: 'YYYY-MM-DD',
}));
Consulta la documentación de winston-daily-rotate-file para más detalles y configuraciones avanzadas.
Jorge García
Fullstack developer