Назад | Перейти на главную страницу

Какая лучшая стратегия для ротации журналов с apache + пассажир + ruby-on-rails + mysql?

(Надеюсь, у меня есть подходящий сайт SE для этого вопроса, извиняюсь, если нет.)

У меня есть приложение Ruby-on-Rails, которое развертывается с использованием Apache + mod_rails (пассажир). Он использует MySQL в качестве базы данных. я использую SyslogLogger отправить журнал RoR в системный журнал и использовать logrotate через ежедневное задание cron для ротации журналов.

Я обнаружил, что приложение RoR зависает, если оно находится в середине чего-то при ротации журналов. Я пробовал поставить copytruncate в logrotate конфигурации, но похоже, что это также влияет на apache журналы (возможно, потому, что журналы ошибок RoR идут в error.log файл из apache) и - возможно - также журналы MySQL (возможно - иногда трудно точно определить, какой журнал вызывает сбой).

Поиск в Интернете дает несколько разных решений для ротации журналов, одно из них - использовать copytruncate ключ, другой - использовать cronolog, но я еще не нашел ни одной, которая напрямую решала бы проблему, которую я вижу.

Так есть ли известное решение для этого? Каков «правильный способ» ротации журналов в приложении RoR (с использованием apache и mod_rails для развертывания)? Я должен просто поставить copytruncate в каждый файл конфигурации logrotate, который имеет какое-то отношение к приложению?

Вместо copytruncate у меня работали эти строки в файле logrotate для моего приложения rails:

  postrotate
    touch /your-rails-directory/tmp/restart.txt
  endscript

Я бы не стал отправлять журналы вашего приложения Rails в syslog. Вы пробовали конфигурацию logrotate, когда позволяли Rails записывать собственные файлы журналов?