You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写DRY风格的rsyslog规则?能否通过引用规则实现?

在rsyslog与liblognorm中实现DRY风格的规则引用

可以通过规则引用实现DRY(Don't Repeat Yourself)风格的规则编写,liblognorm原生支持规则复用的语法,不需要重复编写相同的字段匹配逻辑。

具体实现方式

liblognorm使用%:ref=<规则名>%语法来引用已定义的规则,注意被引用的规则必须先于引用它的规则定义。

修改后的规则示例

先定义被复用的innerQuery规则:

rule=innerQuery:%timestamp:date-rfc5424% %queryid:number% %client:ipv4%/%clientport:number% %querytype:word% %domain:word% %additionalinfo:rest%

再定义wrapperQuery规则,直接引用innerQuery的匹配逻辑:

rule=wrapperQuery:%mts:date-rfc5424% %mh:char-to: % [%mt:char-to:]%] %:ref=innerQuery%

这种引用方式会把innerQuery的字段匹配逻辑完整嵌入到wrapperQuery中,效果和直接复制字段定义完全一致,同时实现了逻辑复用,符合DRY原则。

注意事项

  • 被引用的规则必须提前定义,否则liblognorm会无法识别引用
  • 不需要自定义REFERENCE_前缀,直接使用:ref关键字即可完成引用

内容的提问来源于stack exchange,提问作者weshouman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:52:10