【发布时间】:2018-05-17 09:56:32
【问题描述】:
我尝试在系统日志模板中使用正则表达式,但它仍然不起作用。我首先尝试做匹配一切以查看它是否有效,但它不起作用。我用一个在线工具测试了我的表达,它在那里工作。在我看来,日志消息应该是空的,因为表达式总是匹配 or?但是日志文件中总是有零。
template(name="testLogFormat" type="list")
property(name="syslogtag"
regex.type="ERE"
regex.submatch="0"
regex.expression=".*--end"
regex.nomatchmode="ZERO"
)
【问题讨论】:
-
它应该如何工作?什么是样本输入,什么是预期输出?您当前的正则表达式没有找到任何匹配项,
regex.nomatchmode="ZERO"设置输出0s。如果您想在不匹配时使用空白,请使用regex.nomatchmode="BLANK" -
我有一个字符串 abc[123],我想在括号内获取术语,或者如果它为空,我想要 0。使用 .* 我匹配每个字符或?!
-
试试
regex.expression="\[([0-9]+)]"和regex.submatch="1" -
谢谢,但我之前试过这个,当我用这个模板重新启动系统日志时出现错误。 “syslogd:运行失败,错误 -2207” syslog 版本 7.4.7。
-
您是否像
%msg:R,ERE,1,ZERO:\[([0-9]+)]--end%一样添加它? Rsyuslog.com 说:“如何在 rsyslog.conf 中使用这个表达式的一个非常简单的例子如下:$Template tpl,"%msg:R,ERE,1,ZERO:\[([0-9]+)]--end%\n"*.* /path/to/file;tpl”