Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

88
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda