Winston пишет только в один транспорт

Я использую пользовательский регистратор winston для одновременной записи в консоль и в файл в зависимости от уровня ведения журнала (т.е. что-либо в консоль, но только ошибки и предупреждения в файл). Почему-то запись в консоль работает, а в файл ничего не записывается, хоть и вызываю ошибку.

Изначально я перепутал порядок уровней, начиная с trace=0 и заканчивая error=9. Пока у меня была такая установка winston писал в файл, а не в консоль. Я предполагаю, что winston записывает только в один транспорт, а затем останавливается?

Мой конфиг выглядит так:

import winston from 'winston';

const logger = new (winston.Logger)({
  levels: {
    trace: 9,
    input: 8,
    verbose: 7,
    prompt: 6,
    debug: 5,
    info: 4,
    data: 3,
    help: 2,
    warn: 1,
    error: 0,
  },
  colors: {
    trace: 'magenta',
    input: 'grey',
    verbose: 'cyan',
    prompt: 'grey',
    debug: 'blue',
    info: 'green',
    data: 'grey',
    help: 'cyan',
    warn: 'yellow',
    error: 'red',
  },
});

logger.add(winston.transports.Console, {
  level: 'trace',
  prettyPrint: true,
  colorize: true,
  silent: false,
  timestamp: false,
});

logger.add(winston.transports.File, {
  prettyPrint: false,
  level: 'error',
  silent: false,
  colorize: true,
  timestamp: true,
  filename: `${__dirname}/../logs/error.log`,
  maxsize: 40000,
  maxFiles: 10,
  json: false,
});

person Lukas    schedule 13.06.2016    source источник


Ответы (1)


Кажется, мне пришлось дать каждому транспорту имя. т.е.

logger.add(winston.transports.Console, {
  name: 'trace-console',
  // ...
});

logger.add(winston.transports.File, {
  name: 'error-file',
  // ...
});

Теперь он работает так, как ожидалось.

изменить: по какой-то причине у обоих параметр colorize тоже должен быть установлен в значение true (?).

person Lukas    schedule 14.06.2016