Как вращать файлы журналов при запуске 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 и без риска переполнения диска.