如何给 Winston 记录器上色?

How to color Winston logger?

我一直在阅读 documentation 但我找不到添加颜色的方法。我在 colorsLogger 中设置了 winston 可用的颜色,并将它们作为参数传递给 addColor()。创建传输后,我将 colorize 声明为 true

const { addColors, createLogger, format, transports } = require('winston');

const transportsList = [];

const colorsLogger = {
    error: 'red',
    warn: 'yellow',
    info: 'cyan',
    debug: 'green'
};

addColors(colorsLogger);

transportsList.push(
    new transports.Console({
        colorize: true,
        prettyPrint: true,
        format: format.combine(
            format.printf(info => `[${info.timestamp}] ${info.level}: ${info.message}`),
        )
    })
);

const logger = createLogger({
    format: format.combine(
        format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
        format.json()),
    transports: transportsList
});

module.exports = logger;

您需要提供 colorize 作为函数。像这样

transportsList.push(
  new transports.Console({
    "prettyPrint": true,
    "format": format.combine(
      format.colorize(), // see this
      format.printf(info => `[${info.timestamp}] ${info.level}: ${info.message}`)
    )
  })
);

希望对您有所帮助。