Как вращать файлы журналов при запуске pyapns и twistd

Я использую pyapns (Iphone push server), который в свою очередь использует Twisted (Twistd Daemon).

Демон twistd создает файлы twistd.log. Он поворачивает их в twistd.log.1, twistd.log.2 и т. Д., Когда twistd.log достигает 1 МБ, но не использует logrotate, поэтому я думаю, что он встроен.

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

Я пытался использовать logrotate или подобное для вращения журналов, но тогда мне нужно было бы очень часто запускать logrotate, так как мне нужно вращать ДО того, как twistd.log достигнет 1 МБ. Это может произойти в течение секунды, насколько я знаю, в зависимости от того, сколько журналов производится.

Так как же мне войти в систему без взлома скриптов pyapns/twistd?

1 ответ

На самом деле не существует способа сделать это с обычным logrotate. Logrotate - это не демон, он запускается cron и обычно один раз в день.

Вы можете изменить его, чтобы запускать каждые несколько секунд, но если 1 МБ может заполняться так быстро, logrotate не сможет удержаться на ногах.

Почему бы вам не написать простую задачу cron, которая бы удаляла все лишние повернутые файлы журналов, и оставляла это для pyapns/twistd для продолжения вращения на 1 МБ? Например, вы можете удалить все файлы старше недели с помощью простого задания cron:

/usr/bin/find /var/log/twistd/* -mtime +7 -exec /bin/rm {} \;

Вы даже можете сжать файлы, например:

/usr/bin/find /var/log/twistd/* -regex '*.log.[0-9]+' | /usr/bin/xargs -I{} /bin/gzip {}

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

Другие вопросы по тегам