
Я пишу программу, которая никогда не прекратится. Она также будет создавать большие логи (файлы) того, что она делает. Я бы хотел, чтобы процесс Linux периодически (каждые X минут (cronjob?)) выполнял:
- Взять текущие журналы из текущего файла журнала
- поместите их в отдельный файл (с соответствующим названием) для автономного хранения/удаления
- Усеките текущий файл журнала, чтобы данные не дублировались.
Всебез потери данных или прерыванияв производящую программу. Так что я получаю последовательность журналов с временными разделителями
Есть ли утилита Linux или известное решение для этого? Или мне следует встроить эту функцию ведения журнала в программу?
решение1
Linux использует syslogd
для управления файлами журналов. Я не пользовался этим лично, поэтому не уверен, какие могут быть подвохи, но по сути вы просто отправляете сообщения в журнал, а демон заботится о ротации файлов и т. д.
Глянь сюда:http://linux.die.net/man/3/syslog
Вы можете настроить /etc/syslog.conf
маршрутизацию сообщений в определенный файл, а также вручную ротировать журналы с помощью logrotate
, или настроить задание cron.
решение2
Обычно демоны просто пишут логи и ничего больше. Ротация логов — это работа другого ПО. Обычно так и естьlogrotateили аналогичное программное обеспечение.