1 Функции макросов

Обзор

Функции макросов дают возможность индивидуализации значений макросов.

Периодически макрос может раскрыться в значение с которым не всегда легко работать. Значение может быть длинным или содержать определённую подстроку, которая вас интересует и которую вы бы хотели извлечь. Это та задача, где функции макросов могут быть полезны.

Синтаксис функции макросов:

{<макрос>.<функция>(<параметры>)}

где:

  • <макрос> - настраиваемый макрос (например {ITEM.VALUE} или {#LLDМАКРОС})
  • <функция> - применяемая функция
  • <параметры> - список параметров функции разделенных запятыми. Параметры необходимо заключать в кавычки, если они начинаются с '' ''(пробел), " или содержат ), ,.

Например:

{{ITEM.VALUE}.regsub(шаблон, вывод)}
       {{#LLDМАКРОС}.regsub(шаблон, вывод)}

Поддерживаемые функции макросов

ФУНКЦИЯ
Описание Параметры Поддерживается для
regsub (<шаблон>,<вывод>)
Извлечение подстроки при помощи совпадения с регулярным выражением (с учетом регистра). шаблон - регулярное выражение для поиска совпадения
вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9 (placeholder). \0 вернёт соответствующий текст.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения)
iregsub (<шаблон>,<вывод>)
Извлечение подстроки при помощи совпадения с регулярным выражением (без учета регистра). шаблон - регулярное выражение для поиска совпадения
вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9 (placeholder). \0 вернёт соответствующий текст.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения)

Если функция используется в поддерживаемых местах, но применён макрос, который не поддерживает функции макросов, тогда макрос раскроется в 'НЕИЗВЕСТНО'.

Если шаблон не соответствует регулярному выражению, тогда макрос раскрывается в 'НЕИЗВЕСТНО' (за исключением макросов низкоуровневого обнаружения, где в этом случае функция будет проигнорирована и макрос останется нераскрытым)

Если функция макросов применяется в макросе в местах, которые не поддерживают функции макросов, тогда функция будет игнорироваться.

Примеры

Способы в которых можно использовать функции макросов для индивидуализации значений проилюстрированны в следующих примерах, содержащие строки журналов как полученное значение:

Полученное значение Макрос Вывод
123Log line {{ITEM.VALUE}.regsub(^[0-9]+, Problem)} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} Problem ID: 123
Log line {{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} ''Problem ID: ''
MySQL crashed errno 123 {{ITEM.VALUE}.regsub("^([A-Z]+).*([0-9]+)", " Problem ID: \1_\2 ")} '' Problem ID: MySQL_123 ''
123 Log line {{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} *НЕИЗВЕСТНО* (некорректное регулярное выражение)
имяклиента_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} имяклиента
имяклиента_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
имяклиента_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (некорректное регулярное выражение)