如何获取mmnormalize匹配的规则的标签

How to get the tags of the rule matched by mmnormalize

我写了一些 liblognormalize 规则来解析 postgresql 日志。 我的规则文件包含两个规则,每个规则都有一些标签,例如:

rule=POSTGRESQL,CHECKPOINT: ....
rule=POSTGRESQL,SLOWQUERY: ....

在我的 rsyslog 配置中 运行mmnormalize 之后,我想知道哪个规则实际匹配正在处理的日志行。最简单的解决方案是获取标签。我知道 mmnormalize 会导出一些变量,例如 $parsesuccess。是否有包含所用规则标签的变量?

解决方案似乎是 annotate 功能:

rule=POSTGRESQL,CHECKPOINT: ....
annotate=CHECKPOINT:+checkpoint="complete"

基本上注释行会添加一个包含值complete的字段checkpoint到所有符合标签CHECKPOINT

规则的日志行

找到了 here

我不知道我在文档的什么地方找到了它,但是在我前段时间写的一个 rsyslog 配置文件中,我发现我可以访问 liblognorm 通过 event.tags 分配给消息的标签列表在 rsyslog 中。

我有例如

template( # ...
  property(name="$!event.tags")
)

if $!event.tags != "" then { # ...