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

Как изменить формат даты в почтовом журнале?

Формат дат моих журналов почтового журнала выглядит следующим образом:

May 12 04:12:54

Мне нужно указать год на этой дате. Возможно ли такое изменение?

Возможно, лучший ответ - использовать новый стандарт syslog для всех журналов, генерируемых rsyslog ..... см.

 http://support.pimpmylog.com/kb/softwares/rsyslog-protocol-23-format

Конфигурация довольно близка к стандарту RFC 5424.

Это делается путем помещения в файл rsyslog.conf следующей строки:

 $ActionFileDefaultTemplate RSYSLOG_SyslogProtocol23Format

Данная строка в файле системного журнала будет выглядеть следующим образом:

 <27>1 2014-01-12T20:06:05.783312-05:00 somebody smbd 3752 - -  [2014/01/12 20:06:05.783190,  0] printing/print_cups.c:487(cups_async_callback)

Обратите внимание, что в метку времени включены полное время и дата, а также часовой пояс.

После небольшого дополнительного исследования и нескольких тестов я нашел нужное решение. Мой сервер работает с CentOS 7.6, в которой для ведения журнала используется rsyslog.

  1. Отредактируйте файл /etc/rsyslog.conf и добавьте следующий шаблон перед разделом «ПРАВИЛА»:
$template MailLogFormat, "%timestamp:::date-year%-%timestamp:::date-month%-%timestamp:::date-day% %timestamp:::date-hour%:%timestamp:::date-minute%:%timestamp:::date-second% %hostname% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
  1. Найдите строку:
# Log all the mail messages in one place.
mail.*       -/var/log/maillog

и измените на:

# Log all the mail messages in one place.
mail.*       -/var/log/maillog;MailLogFormat
  1. Перезагрузите rsyslog:
systemctl restart rsyslog

Готово. Журналы в файле / var / log / maillog будут напечатаны с датой в формате: Год-Месяц-День Час: Минута: Секунда.