Подтвердить что ты не робот

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' });
4b9b3361

Ответ 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).