У меня есть приложение Linux, которое постоянно записывает информацию о регистрации в файл журнала, например. /var/log/application.log
, Поскольку приложение не поворачивает файл автоматически, этот файл журнала может достигать размера гигабайта в течение нескольких недель, поэтому я хочу иметь возможность правильно вращать этот файл
Моя главная задача здесь заключается в том, чтобы вращать файл, который постоянно открывает приложение, мне, вероятно, потребуется:
Переместить файл в повернутую форму
/var/log/application.log -> /var/log/application.log.2013-01-28
Создать пустое
/var/log/application.log
. Obs: На данный момент процесс подачи заявки все еще пишет/var/log/application.log.2013-01-28
Измените файловый дескриптор процесса приложения, чтобы снова указывать на
/var/log/application.log
Так я прав? Если так, как я могу это сделать? (в основном это изменение части файлового дескриптора)
Если нет, то как правильно и как это сделать?
dup2
новый дескриптор поверх старого, а затем закрыть новый дескриптор.)Ответы:
Напишите
logrotate
конфиг для использованияcopytruncate
источник
Большинство таких приложений реагируют на сигнал, такой как
SIGHUP
, и закрывают и снова открывают свои файлы журналов при получении сигнала. Проверьте документацию вашего приложения для правильного сигнала для отправки.источник