Узел.JS logging получает проблему, когда файлы журнала прокатываются ОС.

У меня есть узел.JS приложение, которое работает под Linux системы и использует log4js библиотеку журналов. Файлы журналов ежедневно прокатываются системой Linux rolling system. Вопрос заключается в следующем: кто-то знает, как заставить log4js воссоздать и использовать исходный файл журнала, когда он переименован так или иначе?
Обратите внимание, Log4js continue записывает лог в переименованный файл (кажется, дескриптор потока сохраняется).
Пожалуйста, обратите внимание, что я не хочу использовать log4js DaylyRollingFileAppender, потому что моя папка журнала содержит файлы журнала, созданные на различных языках (Java, Python, JavaScript, Bash…).

1 ответ

  1. Я предполагаю, что вы используете logrotate.

    Вы можете попробовать использовать директиву ‘reload’ в файле конфигурации logrotate. (Подробнее см.: http://www.linuxcommand.org/man_pages/logrotate8.html)

    Похоже, что log3js может обрабатывать SIGHUP. (Выпуск: https://github.com/nomiddlename/log4js-node/issues/343 , запрос тяги: https://github.com/nomiddlename/log4js-node/pull/403)

    Вторичным решением является настройка его на использование директивы’ copytruncate’, но у него есть компромиссы:
    https://serverfault.com/questions/688658/rsyslog-with-logrotate-reload-rsyslog-vs-copytruncate