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

Я хочу, чтобы мои журналы отправлялись мне на почту с помощью logrotate

Это не совсем вопрос программирования как такового, скорее вопрос обработки журнала.

Тем не мение. У моей компании несколько клиентов, и у каждого из них есть набор журналов, которые я бы очень хотел, чтобы они отправили мне по электронной почте.

Теперь еще одно предварительное условие - они должны быть выделены простым HTML.

Все очень хорошо, для данных типов бревен удалось сделать хайлайтер. Итак, что я делаю, я использую logrotateс prerotate материал для отправки журналов по электронной почте. Пример:

/var/log/a.log /var/log/b.log {
  daily
  missingok
  copytruncate

  prerotate
    /usr/bin/python /home/foo/hilight_logs /var/log/{a,b}.log | /usr/sbin/sendmail -FLog\ mailer -fnoreply@client.com me@mydomain.com
  endscript
}

Проблема с этим подходом в основном в том, что logrotate отстой: он запустит команду для каждого файла журнала, указанного в спецификаторе, и, насколько мне известно, нет способа узнать, какой из файлов журнала обрабатывается. (Что все равно не поможет.)

Если не повторять то же самое logrotate до 10 раз на разных машинах, единственное, что я могу сделать, это просто увязнуть в спаме журнала каждую ночь. И я устал от этого сегодня, поэтому я спрашиваю.

попытаться заменить prerotate с участием firstaction. таким образом ваша почтовая команда будет выполняться только один раз для всех журналов, определенных в блоке.

это текст со страницы руководства:

firstaction/endscript
          The lines between firstaction and endscript (both of which must appear on lines by themselves) are executed once before all log files that match the
          wildcarded pattern are rotated, before prerotate script is run and only if at least one log will actually be  rotated.  These  directives  may  only
          appear inside a log file definition. If the script exits with error, no further processing is done. See also lastaction.