Winston: как вращать журналы
Как я могу вращать журналы при использовании Winston для ведения журнала для node.js. То есть, как я могу создать новый файл для каждого дня запуска приложения?
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: '2012-07-09.log' })
]
});
logger.log('info', 'Test Log Message', { anything: 'This is metadata' });
Ответы
Ответ 1
winston автор и сопровождающий здесь.
Вход в новый файл каждый день - это открытый запрос функции: https://github.com/flatiron/winston/issues/10. Хотелось бы увидеть, как кто-то реализует это.
Тем не менее, есть и другие варианты:
-
Транспортный файл принимает параметр maxsize, который будет вращать файл журнала, если он превышает определенный размер в байтах.
-
Существует также открытый запрос на перенос с новым транспортом. У меня не было шанса по-настоящему разобраться в "fileRotate", который, похоже, делает такой поворот на основе даты: https://github.com/flatiron/winston/pull/120/files
Ответ 2
Функция присутствует, и мы используем ее в производстве, winston.transports.DailyRotateFile:
var timeFormatFn = function() {
'use strict';
return moment().format(cfg.timeFormat);
};
var logger = new(winston.Logger)({
exitOnError: false,
transports: [
new(winston.transports.DailyRotateFile)({
filename: cfg.appLogName,
dirname: __dirname + '/../' + cfg.logsDirectory,
datePattern: cfg.rollingDatePattern,
timestamp: timeFormatFn
}),
new(winston.transports.Console)({
colorize: true,
timestamp: timeFormatFn
})
]
});
Ответ 3
По словам автора winston-filerotatedate, это:
Транспортировка файлов для winston, которая позволяет поворачивать файлы журналов в зависимости от размера и времени.
Транспорт File принимает имя файла с помощью опции "filename" и использует этот файл в качестве первичной цели ведения журнала. Если файл превышает байты maxsize, текущий файл журнала будет переименован и будет создан новый первичный лог-фрагмент. Имя переименованного файла журнала формируется как "basenameYYYYMMDD [a-z].bak".
Доступны следующие опции:
- уровень: Уровень сообщений, которые должен регистрировать этот транспорт.
- silent: Булевский флаг, указывающий, следует ли подавлять вывод.
- timestamp: Булевский флаг, указывающий, следует ли добавлять вывод с отметками времени (по умолчанию true). Если функция указана, вместо временных меток будет использоваться ее возвращаемое значение.
- имя_файла: Имя файла журнала для записи вывода.
- dirname: В папке будет создан файл журнала.
- maxsize: Максимальный размер в байтах файла журнала, если размер превышен, создается новый файл.
- json: Если значение true, сообщения будут регистрироваться как JSON (по умолчанию true).
Ответ 4
По состоянию на 18 декабря 2012 года эта функция теперь доступна в Winston (см. https://github.com/flatiron/winston/pull/205)