【问题标题】:How to colorize parts of log message in winstonJs如何在winstonJs中为部分日志消息着色
【发布时间】:2022-08-18 23:23:11
【问题描述】:

我有以下代码

const {
    colorize,
    combine,
    json,
    printf,
    simple,
    timestamp,
    errors,
    metadata
} = winston.format;

 private readonly consoleLogger = new winston.transports.Console({
        format: combine(
            errors({ stack: true }),
            metadata(),
            timestamp(),
            colorize({ all: true }),
            simple(),
            printf((info) => {
                const { level, message } = info;

                if (info?.metadata?.stackTrace) {
                    return `[${level}] ${message}\\r\\n${info.metadata.stackTrace}`;
                }
                return `[${level}] ${message}`;
            })
        )
    });

基于文档和示例似乎 colorize 会改变整行的颜色。 我想知道如何为字符串的不同部分着色,例如在我的代码中我想要时间戳、级别和消息有不同的颜色,如下图所示

    标签: javascript node.js winston


    【解决方案1】:

    可能的解决方法是通过以下方式将颜色添加到自定义级别:

    winston.addColors({ yourLevelName: yourColor })
    

    您可以在这里查看可能的颜色组合:https://github.com/winstonjs/winston#using-logging-levels

    然后,您可以使用由winston.format.colorize() 返回的 Colorizer 处理您的颜色,并将它们内联到您的 printf,例如,以下 sn-p

    import winston from 'winston';
    
    winston.addColors({ request: 'bold cyan magentaBG' });
    const colorizer = winston.format.colorize();
    const someColoredFormat = format.printf(({ level, timestamp, message, method }) =>
        `${timestamp} ${level}: ${colorizer.colorize('request', method)} ${message}`);
    
    
    const someLogger = createLogger({
      level: 'info',
      format: format.combine(
        format.timestamp({
          format: 'YYYY-MM-DD hh:mm:ss',
        }),
        format.colorize({
          all: true,
        }),
        someColoredFormat
      ),
      transports: [new transports.Console()],
    })
    
    someLogger.info({
      method: 'GET',
      message: `-- some/api/route`
    })
    

    将产生Output

    我认为这应该有助于解决您的问题,但是,我想不出比混合日志级别更惯用的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2011-08-07
      相关资源
      最近更新 更多