Временные метки syslog бывают двух видов: высокоточные временные метки и низкоточные временные метки. Если высокоточные временные метки имеют формат ISO 8601, то низкоточные временные метки имеют формат MMM dd HH:mm:ss (месяц - словами, день и время - цифрами).
Временные метки с низкой точностью лучше читаются. С другой стороны, формат с высокой точностью дает больше деталей о времени журнала. Поэтому, если мы хотим, чтобы наши журналы были легко читаемы, мы выберем временную метку с низкой точностью. Но если мы хотим знать больше о том, когда произошло событие в журнале, мы будем использовать временную метку высокой точности.
Итак, как изменить формат временной метки в syslog? В этом руководстве мы поговорим о том, как изменить формат даты в syslog. Мы также рассмотрим файл rsyslog.conf.
Файл rsyslog.conf
Файл rsyslog.conf - это конфигурационный файл для утилиты rsyslog. Он содержит модули протоколирования, правила протоколирования, глобальные директивы для протоколирования, шаблоны протоколирования и практически любую конфигурацию, связанную с протоколированием. Зная это, мы можем отформатировать дату - а также временную метку - наших журналов, отредактировав файл rsyslog.conf.
Переход на формат с низкой точностью
syslog использует глобальную директиву $ActionFileDefaultTemplate для определения шаблона журнала. Затем указанный шаблон определяет формат файла журнала, включая формат временной метки.
syslog поставляется с различными зарезервированными/встроенными шаблонами. Некоторые из них используют формат временных меток с низкой точностью, а другие - с высокой. В зависимости от того, что мы хотим получить, мы можем указать любой из них с помощью глобальной директивы $ActionFileDefaultTemplate.
Конечно, существование зарезервированных шаблонов подразумевает, что мы можем создавать собственные шаблоны. Однако в этом учебнике мы будем использовать только зарезервированные шаблоны.
Мы можем использовать формат низкой точности для наших журналов, указав любой из этих зарезервированных шаблонов:
- RSYSLOG_TraditionalFileFormat
- RSYSLOG_TraditionalForwardFormat (используется при пересылке логов в rsyslogd ниже v3.12.5 и другие варианты syslogd).
Поскольку мы не будем пересылать наши журналы, мы будем использовать шаблон RSYSLOG_TraditionalFileFormat.
Давайте откроем файл rsyslog.conf:
1 | sudo cat /etc/rsyslog.conf |
1 2 3 4 5 6 7 | ...обрезан... ########################### #### GLOBAL DIRECTIVES #### ########################### ...обрезан... $ActionFileDefaultTemplate ...обрезан... |
Затем мы укажем RSYSLOG_TraditionalFileFormat в качестве шаблона журнала по умолчанию:
1 2 3 4 5 6 7 | ...обрезан... ########################### #### GLOBAL DIRECTIVES #### ########################### ...обрезан... $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat ...обрезан... |
Теперь перезапустим syslog, чтобы изменения вступили в силу:
1 | sudo systemctl restart syslog |
В нашем конфигурационном файле rsyslog выше, $ActionFileDefaultTemplate установлен на RSYSLOG_TraditionalForwardFormat. Таким образом, наши журналы теперь будут использовать временную метку с низкой точностью (месяц - словами, день - цифрами).
1 2 3 | cat /var/log/daemon.log ...truncated... May 29 16:34:49 localhost dhclient[123]: bound to 192.168.6.5 -- renewal in 237 seconds. |
Переход к формату высокой точности
Мы можем перейти от формата с низкой точностью к формату с высокой точностью двумя способами:
- Закомментировать конфигурационный блок $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat.
- Замените RSYSLOG_TraditionalForwardFormat шаблоном временных меток высокой точности.
Комментирование конфигурации $ActionFileDefaultTemplate
Комментирование конфигурационного блока $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat в rsyslog.conf автоматически изменяет шаблон файла журнала на RSYSLOG_FileFormat. Поскольку RSYSLOG_FileFormat использует формат высокой точности, наша дата теперь будет записываться в журнал в соответствии со стандартом ISO 8601.
Итак, давайте закомментируем конфигурацию $ActionFileDefaultTemplate в нашем файле rsyslog.conf:
1 | sudo cat /etc/rsyslog.conf |
1 2 3 4 5 6 7 | ...обрезан... ########################### #### GLOBAL DIRECTIVES #### ########################### ...обрезан... #$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat ...обрезан... |
Мы перезапустим syslog, чтобы активировать изменения:
1 | sudo systemctl restart syslog |
Вот как теперь выглядит наш daemon.log:
1 2 | sudo cat /var/log/daemon.log |
1 | 2023-05-29T20:35:12.006126+01:00 localhost systemd[1]: Started System Logging Service. |
Использование шаблона файла журнала высокой точности
Как и в случае с временными метками низкой точности, мы можем указать любой из следующих шаблонов для перехода к временным меткам высокой точности:
- RSYSLOG_FileFormat
- RSYSLOG_ForwardFormat (Используется для пересылки журналов в rsyslogd v3.12.5 и выше).
Мы будем использовать шаблон RSYSLOG_FileFormat, поскольку мы не пересылаем наши журналы.
Теперь давайте отредактируем наш rsyslog.conf:
1 2 3 4 5 6 7 | ...обрезан... ########################### #### GLOBAL DIRECTIVES #### ########################### ...обрезан... $ActionFileDefaultTemplate RSYSLOG_FileFormat ...обрезан... |
Теперь перезапускаем syslog:
1 | sudo systemctl restart syslog |
Затем проверяем наш daemon.log:
1 | 2023-05-29T22:24:41.836617+01:00 localhost systemd[1]: Started System Logging Service. |
Формат остается высокоточным.
Заключение
В этой статье мы рассказали о том, как переключаться между форматом временных меток низкой точности и форматом временных меток высокой точности в syslog. Также мы кратко рассмотрели, что делает файл rsyslog.conf.