rsyslog 7搜索和替换消息内容

时间:2018-09-26 19:19:51

标签: linux unix centos rsyslog

在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"

不能弄清楚我哪里错了。也许是一个愚蠢的错误,但无法发现它。很少有眼睛可以帮上忙。

0 个答案:

没有答案