@indexzero -
Как бы вы относились к добавлению необязательного параметра API в транспортный поток файлов, чтобы он мог разбивать файлы журнала по дате? Идея заключалась бы в том, что каждый новый день будет создаваться новый файл журнала, и Winston будет автоматически обрабатывать все это / знать, в какой файл журнала записывать на основе даты.
Примет запрос на исправление для этого
Прохладный! Есть предложения по API? Я думал примерно так:
// Specify path option and default to spanning by day ( 24 hours in each file )
new (winston.transports.File)({ path: './logs' })
но может быть некоторая полезность, позволяющая настраивать фильтр даты / времени.
Нет необходимости усложнять код Winston, когда для этой задачи есть стандартный инструмент: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)
@indexzero Патч для этого еще приемлем? Я знаю, что это можно реализовать с помощью параметра имени файла, но я могу добавить для этого еще один вариант.
это не задача отдельных демонов для каждой реализации ротации журналов. Вот почему у нас есть такие инструменты, как logrotate, как сказал @cemuzunlar .
@cemuzunlar @Dieterbe
Я согласен, в идеале это не будет проблемой Уинстона, но
Я понимаю...
мысли вслух: перенос логики ротации журналов в отдельную программу узла, так что это простой многократно используемый клон logrotate, работающий на разных платформах.
++ 1
Хотя я также сторонник logrotate, он не выполняет свою работу в одиночку. Logrotate очень удобен, потому что он предоставляет способ сообщить программам, что пора очистить и закрыть их журналы.
Файловый транспорт имеет функцию _createStream.checkFile.createAndFlush, которая на первый взгляд выглядит так, как будто она должна делать соответствующие вещи. Чтобы использовать это для logrotate, попросите вашу программу узла перехватить SIGHUP и получить доступ к этой функции. У меня нет времени до моей работы, чтобы опубликовать код, но я попробую сегодня вечером и опубликую свои результаты.
Такой ответ на SIGHUP должен быть перенесен в окна, а затем любая ротация журналов, которую вы используете в окнах (библиотека узлов или другое волшебство), остается в качестве упражнения для читателя.
Если кто-то еще это ищет:
Спасибо за подсказку, @pccowboy. Я тоже большой сторонник logrotate. Я не хочу использовать одну конфигурацию для службы node.js (например, winston File maxsize и т.д.), а другую (logrotate) для других служб (nginx, redis и т.д.) и предпочел бы использовать logrotate для всех моих файлов журналов. Я собрал простую функцию, которая будет прослушивать сигналы HUP и повторно открывать файл журнала postrotate.
Если у меня будет возможность, я попробую переписать это более чистым способом (например, как вариант конфигурации для транспорта файлов) и создать запрос на перенос.
Исправлено # 205.
классно!
Самый полезный комментарий
Нет необходимости усложнять код Winston, когда для этой задачи есть стандартный инструмент: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)