Winston: Добавлена ​​возможность для файлового транспорта разбивать журналы по дате.

Созданный на 29 мая 2011  ·  12Комментарии  ·  Источник: winstonjs/winston

@indexzero -

Как бы вы относились к добавлению необязательного параметра API в транспортный поток файлов, чтобы он мог разбивать файлы журнала по дате? Идея заключалась бы в том, что каждый новый день будет создаваться новый файл журнала, и Winston будет автоматически обрабатывать все это / знать, в какой файл журнала записывать на основе даты.

feature request

Самый полезный комментарий

Нет необходимости усложнять код Winston, когда для этой задачи есть стандартный инструмент: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)

Все 12 Комментарий

Примет запрос на исправление для этого

Прохладный! Есть предложения по 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

Я согласен, в идеале это не будет проблемой Уинстона, но

  • winston действительно работает в Windows, в которой нет logrotate, несмотря на несколько (слабо выглядящих) простых попыток в различных блогах (и некоторые предложения по использованию cygwin + самокомпилированный logrotate, но я сомневаюсь, что это было бы возможно даже на теоретических основаниях, предполагая что Winston сохраняет файл открытым для записи, что серьезно ограничивает то, что вы можете делать с этим файлом в Windows)
  • Файловый транспорт Winston уже выполняет ротацию журналов, только он разбивается по размеру файла, а не по дате. И он также удаляет старые файлы, так что это все основные функции ротации журналов.

Я понимаю...
мысли вслух: перенос логики ротации журналов в отдельную программу узла, так что это простой многократно используемый клон logrotate, работающий на разных платформах.

++ 1

Хотя я также сторонник logrotate, он не выполняет свою работу в одиночку. Logrotate очень удобен, потому что он предоставляет способ сообщить программам, что пора очистить и закрыть их журналы.

Файловый транспорт имеет функцию _createStream.checkFile.createAndFlush, которая на первый взгляд выглядит так, как будто она должна делать соответствующие вещи. Чтобы использовать это для logrotate, попросите вашу программу узла перехватить SIGHUP и получить доступ к этой функции. У меня нет времени до моей работы, чтобы опубликовать код, но я попробую сегодня вечером и опубликую свои результаты.

Такой ответ на SIGHUP должен быть перенесен в окна, а затем любая ротация журналов, которую вы используете в окнах (библиотека узлов или другое волшебство), остается в качестве упражнения для читателя.

Если кто-то еще это ищет:

Спасибо за подсказку, @pccowboy. Я тоже большой сторонник logrotate. Я не хочу использовать одну конфигурацию для службы node.js (например, winston File maxsize и т.д.), а другую (logrotate) для других служб (nginx, redis и т.д.) и предпочел бы использовать logrotate для всех моих файлов журналов. Я собрал простую функцию, которая будет прослушивать сигналы HUP и повторно открывать файл журнала postrotate.

Если у меня будет возможность, я попробую переписать это более чистым способом (например, как вариант конфигурации для транспорта файлов) и создать запрос на перенос.

https://gist.github.com/suprememoocow/5133080

Исправлено # 205.

классно!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги