Winstonjs:是否可以为不同的传输设置自定义格式化程序?

时间:2018-05-11 20:09:11

标签: javascript node.js logging winston

我想在Winston中使用不同的控制台和文件传输格式,因为我想使用粉笔模块自己着色控制台日志。
我使用以下代码创建了记录器:

this.logger = createLogger({
    levels: {
        fatal: 0,
        error: 1,
        warning: 2,
        info: 3,
        debug: 4,
        trace: 5,
    },
    format: format.simple(),
    transports: [
        new transports.Console({
            json: false,
            level: 'trace',
            formatter: (options) => {
                console.log(options);
                return "formatter";
            },
        }),
        new transports.File({
            filename: 'combined.log',
            json: false,
            level: 'trace',
            formatter: function(options) {
                console.log(options);
                return "formatter";
            }
        }),
    ]
});

但永远不会调用formatter函数,我只是在控制台和文件中看到默认的JSON输出 甚至可以为不同的传输分离格式化器吗? 我正在使用 Winston 3.0.0-rc5

1 个答案:

答案 0 :(得分:0)

这对我有用。我的示例的核心是基于他们的api页面:https://www.npmjs.com/package/winston



const winston = require('winston');

var config = winston.config;
var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({
      formatter: function(options) {
        console.log(options);
        return "console!";
     }
    }),
    new (winston.transports.File)({ 
        json: false, //THIS is important for type "File"
	      filename: 'test.log',
	      formatter: function(options) {
	       console.log(options);	
	       return "log file!";	
	      }
    })
  ]
});
logger.info('nono');