rsyslog 7 поиск и замена содержимого сообщения - PullRequest
0 голосов
/ 26 сентября 2018

В rsyslog я пытаюсь найти определенное ключевое слово в моем сообщении журнала и заменить его другим, но, похоже, столкнулся с проблемой.Осмотрелся и нашел очень мало примеров этого, но не смог понять, что я делаю не так.

У меня есть следующее в файле myrsyslog.conf

template(name="logline" type="string" string="%timegenerated% %HOSTNAME% %syslogtag% %$!msg%\n")

if re_match($msg,'APP_MAJOR_ALERT$')
then {
    set $!msg = replace($msg, "APP_MAJOR_ALERT", "APP_MINOR_ALERT");
} else {
    set $!msg = $msg;
}

action(type="omfile" file="/tmp/logfile" template="logline")

Теперь это похоже наВ других примерах я использую re_match для поиска строк, заканчивающихся поисковым ключевым словом (APP_MAJOR_ALERT), и, если оно совпадает, я заменяю MAJOR на MINOR.Другая часть ничего не делает, но печатает сообщение как есть, что, кажется, работает нормально.

Однако в случае совпадения я вижу журнал, просто выводящий «0» как сообщение.Просмотр документации rsyslog (версия 7.4.10) указывает на то, что функция замены должна возвращать измененную строку, но в моем случае она возвращает «0».

Sep 26 14:41:22 localhost ec2-user: 0

Введенный тестовый ввод был

logger "ERROR o.s.c.c.d.h.DiscoveryClientHealthIndicator - Error com.ecwid.consul.v1.OperationException: OperationException(statusCode=500, statusMessage='Internal Server Error', statusContent='rpc error: rpc error: No cluster leader' svc_APP_GROUP,id_APP_NAME,APP_MAJOR_ALERT"

Не могу понять, где я не прав.Возможно глупая ошибка, но не в состоянии обнаружить это.Здесь может помочь пара глаз.

...