Возможно для приложения Logrotate Rails с пассажиром Nginx без перезагрузки?
-
25-09-2019 - |
Вопрос
Можно сделать LOGROTATE без перезапуска Nginx (просто отправьте сигнал usr1 в nginx, это сделает работу). Интересно, это возможно для моего приложения Rails (Nginx пассажир). Не стоит перезапустить мои рельсы приложения, чтобы сделать логмотату.
Решение
Если вы говорите о Rails Application Log Rotation, вы можете сделать это, надевая
config.logger = Logger.new(config.log_path, 10, 1024**2)
в вашем файле окружающей среды. 2-й аргумент - это количество файлов .Log, которые вы хотели бы сохранить, и 3-го - это размер в байтах, что файлы могут достичь до того, как они будут повернуты. Эта конфигурация означает 10 файлов 1 мегабайта. Возможно, не может быть так же настраивается в качестве Logrotate (не поддерживает сжатие и т. Д.), Но она позволяет сохранить все ваши файлы журналов в вашем приложении. Обычно это работает для меня.
Также Нашел это Если хотите придерживаться вращения журнала через nginx.
Другие советы
Конфигурация Logrotate довольно проста, чтобы получить это
/path/to/rails_apps/*/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
}
то copytruncate
В основном копирует контент на новый файл и усекает старый файл. Это устраняет необходимость перезапуска.