Как объединить Winston и pm2 для ведения журналов, которые чередуются по определенному расписанию

Мое приложение узла в настоящее время использует Winston для ведения журнала консоли, но есть различные проблемы, которые трудно отладить в среде разработки. Мне нужно создать регистратор, который регистрирует только предупреждения и ошибки и сохраняет журналы в текстовый файл. Он должен чередовать интервалы и перезапускаться каждую полночь воскресенья. Это мой текущий регистратор с использованием Winston:

'use strict';

const winston = require('winston');
const m = require('moment-timezone');
let logger = null;

/**
 * Initializes the logger
 * @param {object} configLogging
 */
module.exports.initialize = function initialize(configLogging) {
  const dateFormat = 'dddd, MMMM Do YYYY, h:mm:ss a';

  logger = new winston.Logger({
    transports: [
      new (winston.transports.Console)({
        name: 'info-console',
        level: configLogging.level,
        colorize: true,
        timestamp: function() { return m.utc().format(dateFormat); }
      })
    ]
  });

  logger.info('Starting logging service');
};

/**
 * Gets the logger instance
 * @returns {LoggerInstance} winLogger
 */
module.exports.get = function get() {
  return logger;
};

Я слышал, что pm2-logrotate должен делать то, что я хочу, но я не уверен, как я могу интегрировать его в свое приложение.


person Bargain23    schedule 09.10.2017    source источник


Ответы (1)


Вам нужно настроить pm2 для обработки ротации журналов. В своем коде сначала настройте winston для входа в файл (winston.transports.File) с уровнем warn.

Затем установите pm2 logrotate из консоли:

pm2 install pm2-logrotate

настроить его:

pm2-logrotate:rotateInterval '0 0 * * 0' //каждое воскресенье в полночь

см. дополнительные параметры конфигурации в документации

Запустите приложение: pm2 start, и когда все будет хорошо, сохраните конфигурацию: pm2 save

person Mikko    schedule 10.10.2017