Я пытаюсь заставить logrotate работать на моем VPS, чтобы еженедельно вращать мои файлы apache. В настоящее время содержимое файла конфигурации apache2 как таковое.
"/var/www/user/site.com/logs/*.log" {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Я оставил его на две недели, и, насколько я могу судить, ничего не изменилось. Когда я имитирую это из командной строки, я получаю следующий вывод.
user@geneva:/var/lib/logrotate$ /usr/sbin/logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for "/var/www/user/site.com/logs/*.log"
Handling 1 logs
rotating pattern: "/var/www/user/site.com/logs/*.log" weekly (8 rotations)
empty log files are not rotated, old logs are removed
considering log /var/www/user/site.com/logs/access.log
log does not need rotating
considering log /var/www/user/site.com/logs/error.log
log does not need rotating
not running postrotate script, since no logs were rotated
Любые идеи относительно того, что Iv'e настроен неправильно?
Мой файл статуса тоже пуст :(
user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
Обновить
Я удалил файл состояния и сделал принудительный запуск logrotate, и теперь журналы выглядят так, как будто они повернуты, а файл состояния выглядит более многообещающе!
sudo rm /var/lib/logrotate/status
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
/var/lib/logrotate.status
с датой, по крайней мере, недельной давности. Я обновил ответ с примером ...Это может быть из-за того, что ваши файлы журнала пусты.
Это может произойти из-за того, что apache все еще записывает предыдущий файл журнала, который был переименован без перезапуска apache. Таким образом, access.log стал access.log.1, и apache пишет в него.
Или у вас есть проблемы со временем создания журнала:
источник
notifempty
строку, чтобы иметь дело с 0-байтовыми журналами, не вращающимися. Затем вы захотитеtouch
создать новый файл журнала перед каждым тестом, чтобы logrotate мог что-то вращать.Я столкнулся с подобной проблемой, за исключением того, что ни один из этих ответов не помог мне. Мой файл журнала был огромным и старым, моя конфигурация была на 100% в порядке и действительна, удаление файла состояния не помогло.
Выяснилось, что проблема заключалась в дублировании записей logrotate . Когда я запускаю logrotate вручную в моем конфигурационном файле только так:
он не показал никаких ошибок, он просто сказал:
Я до сих пор не знаю, почему на самом деле. Но когда я запускаю полную команду logrotate, вот так:
Я получил следующую строку:
Оказалось, что файл конфигурации logrotate для моей службы содержит записи для ротации журналов доступа nginx, а также сами журналы службы. И это противоречило конфигурации ngnix logrotate, в которой есть правило для всех записей nginx:
Поэтому решение для моего случая довольно простое: мне просто нужно было удалить конфликтующее правило ротации журналов nginx из моей конфигурации .
Я полагаю, что logrotate начал прерывать обработку файла при конфликтах правил только из одной из новейших версий. Я получаю эту ошибку с v.3.8.7, но под v.3.7.8 с той же конфликтующей конфигурацией выдает ту же ошибку, но вращается нормально. Хотя я не смог найти ни одной записи об этом в журнале изменений logrotate.
источник
Попробуйте запустить
sudo logrotate -f --verbose /etc/logrotate.d/apache2
Посмотрите, что написано в консоли, и исправьте все, что не так.источник
У меня был компьютер Debian 7, который после обновления системы больше не вращал почтовые журналы. Все остальные журналы, кроме почтовых, были правильно повернуты. Я обнаружил, что почтовые журналы выросли на несколько гигабайт. Мне всегда удавалось чередовать логи через Webmin. Затем, запустив,
logrotate -d /etc/logrotate.conf
я увидел следующее сообщение:Ignoring rsyslog.dpkg-old, because of .dpkg-old ending
Выяснилось, что мои записи ротации писем были перечислены в
/etc/logrotate.d/rsyslog.dpkg-old
, что было проигнорировано Переименование файла исправило ротацию файла журнала :-)источник