我正在设置logentries服务。 如果日志条目有一个令牌,那么我想把它发送到api.logentries.com:10000。 令牌是格式为aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee的guid。
现在我正在做:
# If there's a logentries token then send it directly to logentries :msg, regex, ".*[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.*" & @@api.logentries.com:10000
我检查了rsyslogdebugging日志和我的正则expression式不匹配,但我不知道为什么或如何解决它:
5245.961161378:7fb79b514700: Filter: check for property 'msg' (value ' fb1c507f-2ede-4d7f-a140-2bd8d56e133 - application - [play-akka.actor.default-dispatcher-1] - Found user: 4fb11ea5e4b00a1aeebe2800') regex '.*[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.*': FALSE
rsyslog是一个在正则expression式中不接受大括号的垃圾文件中完全没有提到的事实。 因此,下面的正则expression式:
[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}
需要改写为:
[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]-[a-z0-9][a-z0-9][a-z0-9][a-z0-9]-[a-z0-9][a-z0-9][a-z0-9][a-z0-9]-[a-z0-9][a-z0-9][a-z0-9][a-z0-9]-[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]
$味精,正则expression式,yourRegEx @ api.logentries.com:10000 / /过滤出并发送 &〜//丢弃与规则匹配的任何内容 $ template myTemplate,“TOKEN%msg%” *。* @ api.logentries.com:10000?myTemplate
我没有testing它,但它会是这样的
Rsyslog支持POSIX BRE和ERE语法。 现在都有点不寻常了。 然而,两者之间的一个区别是,字符{和}需要在BRE中转义 – 这也是rsyslogs在使用这些模板时的默认语法。
请参阅: https : //en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions和http://www.regular-expressions.info/posix.html
另外,与PCRE相比:
.*? (?: ... ) x? )必须写为: x{0,1} 这个string
fb1c507f-2ede-4d7f-a140-2bd8d56e133
在ERE模式下被匹配:
([[:alnum:]]{8}(-[[:alnum:]]{4}){3}-[[:alnum:]]{11})