代码之家  ›  专栏  ›  技术社区  ›  riccardo.cardin

在Winston日志中隐藏日志级别

  •  2
  • riccardo.cardin  · 技术社区  · 8 年前

    我在用温斯顿。js在Javascript应用程序中记录一些信息。问题是日志级别应该隐藏在打印的日志中。

    而不是像这样:

    info: some pretty and cool log message
    

    some pretty and cool log message
    

    我看了一下 Winston main page

    2 回复  |  直到 8 年前
        1
  •  3
  •   dimaqw    7 年前

    您需要使用自定义格式:

    const { createLogger, format, transports } = require('winston');
    
    const winston = createLogger({
      level: 'info',
      transports: [
        new transports.Console({
          level: 'info',
          format: format.combine(
            format.colorize(),
            format.printf(
              (info) => {
                // return `${info.level}: ${info.message}`;
                return `${info.message}`;
              })
          )
        }),
      ]
    });
    
    
    winston.info('Hello world');
    winston.log('info', 'Hello world 2');
    
    //or you can use wrapper to easy replace console.log
    const logger = {
      log:(msg) => {
        winston.info(msg);
      }
    }
    
    logger.log('Hello world 3');
        2
  •  1
  •   riccardo.cardin    8 年前

    在对库进行单元测试时,我发现了这个: Custom formatter 自定义格式化程序 对于日志级别,基本上可以对将写入日志的文本执行任何操作。

    要仅写入日志消息而不包含任何日志级别信息,请按以下方式重新定义日志的格式化程序。

    var winston = require('winston');
    var logger = new (winston.Logger)({
        transports: [
          new (winston.transports.Console)({
            level: 'info',
            pattern: /info\:/,
            formatter: function(params) {
                return undefined !== params.message ? params.message : "";
            }
          })
        ]
    });
    

    上面的示例定义了一个控制台 logger 只打印 message 对于级别日志 info ,无任何其他信息。

    希望有帮助。