【问题标题】:Hiding log-level in Winston logs在 Winston 日志中隐藏日志级别
【发布时间】:2017-09-20 09:48:11
【问题描述】:

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

而不是这样:

info: some pretty and cool log message

我需要这样的东西:

some pretty and cool log message

我查看了Winston main page,但没有找到任何东西。

【问题讨论】:

    标签: javascript logging winston


    【解决方案1】:

    您需要使用自定义格式:

    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】:

      爬取库的单元测试,找到了这个: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,没有任何附加信息。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2015-06-23
        • 2014-01-22
        • 2016-07-25
        • 2015-04-21
        • 2018-11-21
        • 2013-03-10
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多