Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

87
Vistas
Winston inicia sesión en un archivo que comienza con texto personalizado de varias líneas

Nuestro registro de Winston ya está configurado y funciona muy bien usando winston-daily-rotate-file para crear archivos de registro diarios. Lo que ahora debo hacer es crear esos archivos de registro a partir de una plantilla de archivo específica (o cualquier otro método) con algunas filas de encabezado al comienzo del archivo. Queremos cambiar nuestra aplicación para usar un registro más estructurado para usar con una aplicación interna separada para que nuestro equipo de soporte pueda atravesar archivos de registro grandes más fácilmente.

Normalmente, los archivos de registro agregan cada registro al archivo, comenzando con un archivo en blanco. Para especificar, quiero que ese archivo comience con unas pocas líneas de texto antes de agregar cualquier registro.

es posible? No puedo encontrar ninguna referencia a una funcionalidad como esta ni en Winston ni en winston-daily-rotate-file. ¿Quizás estoy destinado a crear un enlace en la secuencia de archivos usando el parámetro de objeto de options ?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Manejar el evento de rotate es el camino a seguir.

En el siguiente código, estoy rotando cada 2 archivos cada minuto con fines de demostración. Estoy agregando texto en la parte superior de cada archivo nuevo, y también en cada rotación. Como la rotación ocurre más tarde, verá ROTATE encima de NEW, que es lo esperado. Para su escenario, no creo que necesite el new evento.

Manifestación

 var winston = require('winston'); require('winston-daily-rotate-file'); const fs = require('fs'); var transport = new winston.transports.DailyRotateFile({ frequency: '1m', filename: 'log-%DATE%', datePattern: 'YYYY-MM-DD-HH-mm', zippedArchive: false, maxSize: '1k', maxFiles: '2', extension: 'log' }); transport.on('rotate', function (oldFilename, newFilename) { console.log("rotate"); var data = fs.readFileSync(newFilename); //read existing contents into data var fd = fs.openSync(newFilename, 'w+'); var buffer = Buffer.from('ROTATE text inserted on top \n'); fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data fs.writeSync(fd, data, 0, data.length, buffer.length); //append old data fs.close(fd); }); transport.on('new', function (newFilename) { console.log("new"); var data = fs.readFileSync(newFilename); //read existing contents into data var fd = fs.openSync(newFilename, 'w+'); var buffer = Buffer.from('NEW text inserted on top \n'); fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data fs.writeSync(fd, data, 0, data.length, buffer.length); //append old data fs.close(fd); }); var logger = winston.createLogger({ transports: [ transport ] }); async function demo() { for (i = 1; i < 20; i++) { logger.info('Hello World ' + i); console.log(i); await new Promise(r => setTimeout(r, 10000)); } } demo();

Salida de consola

 1 2 3 new rotate 4 5 6 7 8 9 new rotate 10 11 12 13 14 15 new rotate 16 17 18 19

Archivos creados

 log-2022-06-13-14-36log log-2022-06-13-14-37log

Contenido de archivos

1:

 ROTATE text inserted on top NEW text inserted on top {"level":"info","message":"Hello World 10"} {"level":"info","message":"Hello World 11"} {"level":"info","message":"Hello World 12"} {"level":"info","message":"Hello World 13"} {"level":"info","message":"Hello World 14"} {"level":"info","message":"Hello World 15"}

2:

 ROTATE text inserted on top NEW text inserted on top {"level":"info","message":"Hello World 16"} {"level":"info","message":"Hello World 17"} {"level":"info","message":"Hello World 18"} {"level":"info","message":"Hello World 19"}
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda