我正在尝试根据消息内容将从特定主机收到的 rsyslog 消息写入日志文件。假设我想将从“myserver”收到的包含模式“supertext\d{1,4}”的消息发送到 /var/log/myserver-supertext.log,我会选择:
if $fromhost=='myserver' AND $msg contains 'supertext\d{1,4}' then /var/log/myserver-supertext.log
& stop
不幸的是,rsyslog 中基于表达式的过滤器似乎不支持正则表达式,而我试图弄清楚如何使用支持正则表达式的基于属性的过滤器做同样的事情。我当时想的是这样的:
:fromhost, isequal, "myserver" AND :msg, regex, "supertext\d{1,4}" /var/log/myserver-supertext.log
& stop
我知道这样做不行,如果你知道如何做的话我将非常感激。
答案1
不太确定,但似乎你需要使用$msg contains 'supertext[0-9]{1,4}'
这通过了语法。