Назад | Перейти на главную страницу

Как сделать так, чтобы файлы журналов моего веб-сервера не стали слишком большими?

Примечание. Я использую Apache2 (в Linux), но я спросил в общем смысле (только для Linux), потому что я также хотел бы знать «лучший» способ сделать это в целом (поскольку я собираюсь развернуть большой сайт на Nginx или Cherokee).

Мои файлы журналов становятся огромными всего за несколько недель. Мне нужно временно хранить их, но я бы хотел удалить записи старше 2 недель или около того. Возможно ли это и как мне это сделать?

Вы можете использовать logrotate. Он меняет журналы в соответствии с файлом конфигурации для конкретной службы. Обычно он запускается cron ежедневно.

Пример файла конфигурации для apache по адресу /etc/logrotate.d/apache2

/var/log/apache2/*_log {
 daily
 rotate 31
 missingok
 compress
 delaycompress
 sharedscripts
 postrotate
  if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
     /etc/init.d/apache2 reload > /dev/null
  fi
 endscript
 }

Это будет:

  • меняйте журналы каждый день
  • сохранить 31 измененный файл журнала
  • Сжимать повернутые журналы, но сохранять последний повернутый один несжатым (задержка сжатия)
  • Перезагрузить процесс

Если вы не хотите, чтобы процесс перезагружался, вам следует использовать copytruncate, который скопирует текущее содержимое в новый файл, сжимает его, а затем усекает текущий файл журнала. В этом случае вам не нужно sharedscripts, postrotate и endscript.

Канонический инструмент для работы с журналами - logrotate.