У меня есть программа, которая принимает аргумент, позволяющий проводить дополнительную отладку на используемом нами оборудовании.
Журнал просто записывается по стандарту, поэтому обычно мы просто передаем стандарт в файл, т.е. ./myprog -AddDebug> myfile.txt, однако теперь мы должны оставить это ведение журнала включенным, чтобы найти ошибку, которую мы обычно не делаем. сделайте так, ищите способ ротации журналов, чтобы гарантировать, что дисковое пространство сервера не будет использовано.
Я использовал встроенную функцию logrotate в Linux, добавив файл конфигурации в /etc/logrotate.d/mytrace, который содержит следующее:
/home/myprog/mytrace.txt
{
rotate 5
size 2M
copytruncate
olddir trace_archive
}
Когда я запускаю / usr / sbin / logrotate /etc/logrotate.conf, файл трассировки перемещается в архиватор, однако оригинал создается заново, но затем очевидно, что канал теряется, поэтому файл больше не записывается. Затем я попытался заменить create
с участием copytruncate
который по-прежнему помещает файл в архив, но исходный файл продолжает расти.
Вторая проблема: файл архивируется только тогда, когда я вручную запускаю функцию logrotate, она не запускается автоматически при достижении размера файла.
Мы будем благодарны за любую помощь, которую вы можете предоставить по обеим проблемам.
ОБНОВИТЬ
Мне удалось заставить его частично работать, чтобы заставить copytruncate работать, файл необходимо открыть в режиме добавления, поэтому вместо ./myprog -AddDebug > myfile.txt
это следует изменить на ./myprog -AddDebug >> myfile.txt
.
Моя единственная проблема сейчас в том, что он будет вращать, только если я запускаю logrotate -v /etc/logrotate.conf
так как мне сделать это автоматически?
Похоже, мне пришлось бы вручную создать задание cron, которое запускается каждые несколько минут, чтобы гарантировать, что журнал вращается, а не обрабатывается автоматически.
Спасибо
Либо просто подключитесь к | logger
с соответствующими флагами и используйте syslog для управления файлом журнала.
Альтернативой является хорошая вспомогательная программа rotatelogs
включен в дистрибутив apache httpd, который принимает stdin и будет записывать и вращать файлы журнала для вас, например, направлять ваш вывод в | /usr/sbin/rotatelogs /home/myprog/myproglog.%Y-%m-%d-%H_%M_%S 2M
и создавать файлы журнала размером 2 мегабайта с уникальными последовательными именами файлов.
Спасибо всем за вашу помощь.
Я использовал стандартную ротацию журналов, встроенную в ОС, и настроил выполнение cronjob каждые 5 минут, и, похоже, это работает так, как я хотел.
Спасибо