【发布时间】:2021-09-19 22:00:45
【问题描述】:
如果日志字段包含特定字符串,我需要创建一个新字段“状态”。我在fluentd中尝试了下面的代码,但这不起作用。我需要检查日志字段是否包含字符串“错误:”,那么新字段状态应该有错误,否则如果没问题,应该没问题。
<filter **>
@type record_transformer
enable_ruby true
<record>
status "${\
if record['log'].downcase.include? 'error:'
puts 'error'
elsif record['log'].downcase.include? 'ok:'
puts 'ok'
end}"
</record>
</filter>
我们可以使用正则表达式来做到这一点吗?
我也尝试过使用扫描。
<filter **>
@type record_transformer
enable_ruby true
<record>
status ${record["log"].scan(/^.* ([[:<:]]error[[:>:]]|[[:<:]]ok[[:>:]]):.*$/i).first.compact}
</record>
</filter>
【问题讨论】:
标签: regex ruby fluentd qregexp