Fluentd 记录转换器条件语句,用于添加键(如果不存在)

Fluentd record transformer conditional statements to add key if not present

提问人:vijay varma 提问时间:12/14/2022 最后编辑:Azeemvijay varma 更新时间:12/15/2022 访问量:933

问:

如果日志中不存在消息字段,我想将该字段添加到日志中。

下面是相关的 fluentd 配置:

<filter **>
  @type record_transformer
  enable_ruby true
  <record>
    message ${ if record.has_key?('message'); then record ["message"]; else record["message"] == "nomsg"; end}
  </record>
</filter>

但是当消息字段不存在时,我得到,当它存在时得到.message=falsemessage=actual_msg

不知道为什么它没有采取.message=nomsg

请帮忙和建议。
来回尝试了上述语法,但没有运气。

Ruby 解析 Fluentd

评论

0赞 Azeem 12/14/2022
尝试:message ${ if record.has_key?('message'); then record['message']; else 'nomsg'; end }
0赞 Azeem 12/14/2022
在部分即 ,这是一个布尔比较,这就是你得到 .你的目标是得到,所以你只会把它还回去。elserecord["message"] == "nomsg"falsenomsg
0赞 Azeem 12/14/2022
这可以简化,即.message ${ record['message'] || 'nomsg' }

答:

3赞 Amol Mohite 12/15/2022 #1

只需按如下方式更改条件:else

<filter **>
  @type record_transformer
  enable_ruby true
  <record>
    message ${ if record.has_key?('message'); then record ["message"]; else "nomsg"; end}
  </record>
</filter>

我希望这对你有所帮助。

评论

1赞 vijay varma 12/15/2022
我还添加了 msg 字段,例如 message ${ record [“message”] || record [“msg”] ||“无日志消息”],它与TD-Agent在本地完美运行。再次🥰感谢你