Примечание. Я использую 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
}
Это будет:
Если вы не хотите, чтобы процесс перезагружался, вам следует использовать copytruncate
, который скопирует текущее содержимое в новый файл, сжимает его, а затем усекает текущий файл журнала. В этом случае вам не нужно sharedscripts
, postrotate
и endscript
.
Канонический инструмент для работы с журналами - logrotate.