向温斯顿传输添加不同的格式器

Adding different formatters to Winston transports

本文关键字:格式 添加 传输      更新时间:2023-09-26

我需要为每次传输使用不同类型的格式化器。

的例子:

logger = new (winston.Logger)({
    transports: [
        new (winston.transports.LogstashUDP)({
            // some config here. Do noting on formatting
        }),
        new (winston.transports.Mail)({
            // do formatting one way
        }),
        new (winston.transports.File)({
            // write to file as json (maybe format it here)
        }),
        new (winston.transports.Console)({
            // do another formatting
        })
    ]
});

正如我从温斯顿传输文档中看到的,只有控制台支持自定义格式化器。

我使用winston-mailer模块的邮件和winston-logstash-upd

有办法和温斯顿解决这个问题吗?或者如何在这些模块周围创建包装器来支持格式化?

这是由dandv发布到GitHub的解决方案

const logger = winston.createLogger({
  transports: [
    new winston.transports.File({
      filename: 'error.log', level: 'error',
      format: winston.format.simple(),
    }),
    new winston.transports.File({
      filename: 'combined.log', level: 'debug',
      format: winston.format.printf(info => `${new Date().toISOString(), ${info.message}`),
    }),
  ],
});
logger.error('prefixed by the timestamp only in `combined.log`');