Уинстон пишет только на один транспорт
Я использую кастом 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,
});
1 ответ
Кажется, я должен был дать каждому транспорту имя. Т.е.
logger.add(winston.transports.Console, {
name: 'trace-console',
// ...
});
logger.add(winston.transports.File, {
name: 'error-file',
// ...
});
Теперь, кажется, работает как ожидалось.
редактировать: по некоторым причинам, оба должны иметь colorize
опция установлена в true (?).