如何获取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 { # ...
我写了一些 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 { # ...