Winstonjs: возможно ли иметь собственные средства форматирования для разных транспортов? - PullRequest
0 голосов
/ 11 мая 2018

Я хочу иметь разные форматы для переноса консоли и файлов в 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 голосов
/ 12 мая 2018

Это работает для меня.Ядро моего примера основано на их странице 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');
...