Страница справочника logrotate имеет этот демонстрационный конфигурационный файл:
# sample logrotate configuration file
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/news.crit {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP ‘cat /var/run/inn.pid‘
endscript
nocompress
}
и объясняет второй набор директив следующим образом:
Следующий раздел определяет параметры и для /var/log/httpd/access.log и для /var/log/httpd/error.log. Они повернуты каждый раз, когда это растет по 100k в размере, и старые файлы журналов отправляются по почте (несжатые) на www@my.org после прохождения через 5 вращений вместо того, чтобы быть удаленным. sharedscripts означает, что постповорачивать скрипт будет только запущен однажды (после того, как старые журналы были сжаты), не однажды для каждого журнала, который повернут. Обратите внимание, что двойные кавычки вокруг первого имени файла в начале этого раздела позволяют logrotate поворачивать журналы с пробелами на имя. Нормальные правила заключения в кавычки оболочки применяются, с', ", и \поддерживаемые символы.
Я смотрю на тот файл конфигурации и вижу, что существует a compress
директива наверху. Я поэтому предполагаю, что старый вход в систему, что раздел будет уже сжат с gzip (ошибка log.5.gzip, доступ log.5.gzip). Они распаковывают до того, чтобы быть отправленным по электронной почте? Существует ли способ просто отправить их по почте без распаковки?
Журналы сжимаются в локальной файловой системе, да, и распаковываются при отправке по электронной почте, хотя, похоже, это делается с помощью труб вместо файлов (как в gunzip /var/log/httpd/error.log.5.gz | mail "/var/log/httpd/access.log /var/log/httpd/error.log" "www@my.org"
). Он не может отправить их по электронной почте до сжатия, как предлагает Janne Pikkarainen, потому что он отправляет по электронной почте наименее свежий лог - которому в данном случае 5 дней. Это также не приведет к безумно большим письмам (благодаря тому, что они будут инициироваться размером 100k
вместо, скажем, ежедневно
), при условии, что вы будете запускать логротат регулярно - скажем, ежечасно.
Если вы действительно хотите, чтобы вам прислали по электронной почте сжатую версию ваших логов, Дэн Приттс прав - вам нужно создать скрипт, который вы можете вызвать, используя postrotate (или prerotate) вместо использования mail
функции самого logrotate. Вы захотите отправлять сжатые лог-журналы в виде вложений, и есть несколько способов подойти к этому, с разным уровнем сложности и функциональности - подробнее см. в этом вопросе об отправке вложений через командную строку на Stack Overflow.