В 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"
Не могу понять, где я не прав.Возможно глупая ошибка, но не в состоянии обнаружить это.Здесь может помочь пара глаз.