<p>winston 3: colorear todo, incluida la marca de tiempo</p>

Creado en 2 jul. 2018  ·  2Comentarios  ·  Fuente: winstonjs/winston

No puedo encontrar un ejemplo de colorear toda la línea de registro, por ejemplo,

winston.createLogger({
  level: 'debug',
  transports: [
    new winston.transports.Console({
      format: winston.format.combine(
        winston.format.timestamp(),
        winston.format.colorize({ all: true }),
        winston.format.align(),
        winston.format.printf((info) => {
          const {
            timestamp, level, message, ...args
          } = info;

          // const ts = timestamp.slice(0, 19).replace('T', ' ');
          return `${timestamp} ${level}: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
        }),
      ),
    }),
  ],
});

Me gustaría todo en toda la línea coloreado. En Winston 2, parecía funcionar bien, excepto que no coloreó toda la línea.

¿Cómo coloreo toda la línea de salida e incluyo la marca de tiempo como la primera entrada de la línea de registro, no como parte del cuerpo del mensaje?

Comentario más útil

una solución rápida para colorear toda la línea de registro es:

const colorizer = winston.format.colorize();

const logger = winston.createLogger({
  level: 'debug',
  format: combine(
    winston.format.timestamp(),
    winston.format.simple(),
    winston.format.printf(msg => 
      colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
    )
  ),
  transports: [
    new transports.Console(),
  ]

});

Todos 2 comentarios

El problema es que colorize solo coloreará el nivel del objeto de información o las propiedades del mensaje: https://github.com/winstonjs/logform/blob/master/colorize.js#L92 , incluso si opts.all Está establecido. Tbh, creo que eso hace que opts.all sea un poco inútil tal como está; simplemente puede configurar opts.level y opts.message para obtener la funcionalidad actual. opts.all podría, por ejemplo, colorear cada clave en el objeto de información, lo que incluiría la marca de tiempo (el otro punto es que la marca de tiempo se agrega como una clave separada en info, no se antepone a info.message, por lo que no se colorea). Si desea abrir un PR a logform que hace que colorize coloree todas las claves de información cuando opts.all es verdadero, me complacería considerarlo allí. ¡Gracias!

una solución rápida para colorear toda la línea de registro es:

const colorizer = winston.format.colorize();

const logger = winston.createLogger({
  level: 'debug',
  format: combine(
    winston.format.timestamp(),
    winston.format.simple(),
    winston.format.printf(msg => 
      colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
    )
  ),
  transports: [
    new transports.Console(),
  ]

});
¿Fue útil esta página
0 / 5 - 0 calificaciones