在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)结尾的行,如果匹配,则将MIJOR替换为MINOR。 else部分什么也没做,只是按原样打印消息,这似乎很好。
但是,如果有匹配项,我看到的日志只是打印“ 0”作为消息。仔细阅读rsyslog(版本7.4.10)文档,表明replace函数应该返回修改后的字符串,但就我而言,它返回的是“ 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"
不能弄清楚我哪里错了。也许是一个愚蠢的错误,但无法发现它。很少有眼睛可以帮上忙。