Поверните файл, который открыт и записывается постоянно
У меня есть приложение 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
Так я прав? Если так, как я могу это сделать? (в основном это изменение части файлового дескриптора)
Если нет, то как правильно и как это сделать?
2 ответа
Напиши logrotate
Конфиг для использования copytruncate
copytruncate
Truncate the original log file in place after creating a copy, instead of moving the
old log file and optionally creating a new one. It can be used when some program
cannot be told to close its logfile and thus might continue writing (appending) to
the previous log file forever. Note that there is a very small time slice between
copying the file and truncating it, so some logging data might be lost. When this
option is used, the create option will have no effect, as the old log file stays
in place.
Большинство таких приложений реагируют на сигнал, такой как SIGHUP
и закроет и снова откроет свои файлы журналов при получении сигнала. Проверьте документацию вашего приложения для правильного сигнала для отправки.