Rsyslog的 rules在 Sysklogd等其他系统中叫做 selectors。每个 rule中都有一个 filter
和若干个 action。filter可以是基于 Syslog的 PRI来做的,也可以是复杂的类似脚本语言的表达式。
一个 rsyslog.conf中可以写多个 rules,每条 syslog信息会从前到后经由全部 rules依次处理,除非在过程中由 discard action提前跳出。
对于 rsyslog,rule是必须存在的,每个 input都必须 bind到 rule上。当然,你在实际配置里可能看不到,因为 Rsyslog中存在有默认 rule。
下面是一个 rule的示例。
ruleset(name="remote10514"){
action(type="omfile" file="/var/log/remote10514") } ruleset(name="remote10515"){
action(type="omfile" file="/var/log/remote10515") } ruleset(name="remote10516"){
if prifilt("mail.*") then { /var/log/mail10516 stop
}
/var/log/remote10516 } input(type="imptcp" port="10514" ruleset="remote10514") input(type="imptcp" port="10515" ruleset="remote10515") input(type="imptcp" port="10516" ruleset="remote10516")