Как разделять логи на отдельные файлы в Node.js ежедневно с помощью библиотеки Winston - PullRequest
0 голосов
/ 18 октября 2019

У меня есть приложение node.js. Мне нужно регистрировать каждое событие в этой программе, и я использую библиотеку Winston для этого. Я пытаюсь создать файл журнала для каждого дня. Все журналы должны быть отделены день ото дня. Я хочу сохранить ежедневные файлы на моем рабочем столе. Например, запросы (действия в моей программе), которые я сделал сегодня, будут сохранены как 18/10 / 2019.log на моем рабочем столе. И завтра, когда я снова сделаю несколько запросов (например, get, post), на рабочем столе снова войдите как 19/10/2019.log. Я не могу этого сделать. Любые предложения?

РЕДАКТИРОВАТЬ: решено !!

С winston-daily-rotate-file это решается. Чтобы использовать этот модуль:

npm install winston-daily-rotate-file

КОД:

require('winston-daily-rotate-file');
const logDir= 'C://Users/Desktop/LogFiles';

var options = {
     file: {
       level:'info',
       filename: path.resolve(`${logDir}/${new 
  Date().getFullYear().toString()} - ${new Date().getMonth()+1}/%DATE%.log`),
       datePattern: 'YYYY-MM-DD',
       timestamp: new Date()
      };


 let logger = winston.createLogger({
  level:'info', 
  format: winston.format.combine(
    winston.format.printf(info => { return `${info.timestamp} || 
  ${info.level} || Message: ${info.message}`; })
  ),

    transports: [
     new winston.transports.DailyRotateFile(options.file)
      ],  
       exitOnError: false,
});

Ответы [ 3 ]

1 голос
/ 18 октября 2019

Установка Winston Daily Rotate

npm install winston-daily-rotate-file

Примечание: Проверка на совместимость здесь первая

 var winston = require('winston');
  require('winston-daily-rotate-file');

  var fileRotateTransport = new (winston.transports.DailyRotateFile)({
    filename: '%DATE%.log',
    datePattern: 'DD/MM/YYYY',
    maxSize: '20m'
  });

  var logger = winston.createLogger({
    transports: [
      fileRotateTransport 
    ]
  });

Проверьте параметры winston daily rotate для настройки в соответствии с вашими требованиями.

1 голос
/ 18 октября 2019

Попробуйте:

Измените errorLogFileName на удобный для вас формат даты. Журналы будут добавлены в тот же файл в тот же день. Новый файл создается, если дата изменится.

**let errorLogFileName =  new Date().toLocaleDateString()+'error.log';**
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  defaultMeta: { service: 'user-service' },
  transports: [
    new winston.transports.File({ filename: errorLogFileName, level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});
0 голосов
/ 18 октября 2019
var winston = require('winston');

function getLogger(module) {
    var path = module.filename.split('/').slice(-2).join('/');

    return winston.createLogger({
        transports: [
            new winston.transports.Console({
                colorize: true,
                level: 'debug',
                label: path
            })
        ]
    });
}

module.exports = getLogger;

поместить этот отдельный файл в файл проекта

...