Шаблоны изменяют и форматируют выходные данные, генерируемые rsyslog. Они позволяют задать любой формат, который может потребоваться пользователю. Они также используются для динамической генерации имен файлов.
Шаблоны rsyslog
Ниже приведен синтаксис для создания шаблона:
1 | $template TEMPLATE_NAME, "text %PROPERTY% text", [OPTION] |
Поля описываются следующим образом:
Поле | Назначение |
$template | Директива, определяющая шаблон |
TEMPLATE_NAME | Имя шаблона |
“text” | Собственно текст шаблона, окруженный кавычками |
%PROPERTY% | Конкретное содержание сообщения, окруженное знаками процента |
OPTION | Определяет параметры, изменяющие функциональность шаблона |
Шаблоны можно использовать для создания динамических имен файлов. Укажите свойство как часть пути к файлу, чтобы создать новый файл для каждого уникального свойства. Например, используйте свойство timegenerated для создания уникального имени файла для каждого сообщения rsyslog:
1 | $template DynamicFile, "/var/log/%timegenerated%-test.log" |
Укажите имя шаблона в правиле для модификации вывода rsyslog. Динамические файлы представлены шаблоном и префиксом вопросительного знака (?). Пример:
1 | *.* ?DynamicFile |
Свойства
Вы можете использовать свойства внутри шаблона для ссылки на определенное содержимое сообщения rsyslog. Для определения свойства внутри шаблона используйте следующий синтаксис:
1 | %PROPERTY_NAME[:FROM_CHAR:TO_CHAR:OPTION]% |
Поля описываются следующим образом:
Поле | Назначение |
PROPERTY_NAME | Имя свойства |
FROM_CHAR и TO_CHAR | Диапазон символов, на которые действует указанное свойство |
OPTION | Параметры свойства |
Список доступных свойств и их описание можно найти на сайте http://www.rsyslog.com/doc/property_replacer.html.
1. Следующее свойство представляет весь текст сообщения rsyslog:
1 | %msg% |
2. Следующий пример представляет первые два символа текста сообщения:
1 | %msg:1:2% |
3. Следующее свойство представляет имя хоста в сообщении rsyslog:
1 | %hostname% |
4. Следующее свойство представляет объект из сообщения в текстовом виде:
1 | %syslogfacility-text% |
Шаблон: Пример
Следующий пример определяет шаблон с именем class, который форматирует сообщение rsyslog для вывода метки времени, объекта в текстовом виде, приоритета в текстовом виде, имени хоста, текста сообщения и заканчивается новой строкой:
1 | $template class, "Time: %timestamp%, Facility: %syslogfacilitytext%, Priority: %syslogpriority-text%, Hostname: %hostname%, Message: %msg%\n" |
Чтобы использовать шаблон для сообщений /var/log/logfile, включите имя шаблона следующим образом:
1 | *.* /var/log/logfile;class |