问题描述
如果日志字段包含特定字符串,我需要创建一个新字段“状态”。我在 fluentd 中尝试了下面的代码,但这不起作用。我需要检查日志字段是否包含字符串“错误:”,然后新字段状态应该有错误,否则,如果正常,则应该正常。
TXN_ID NET_VALUE CURR EX_TYPE TXN_DATE EX_DATE EX_RATE CONV_NET_VALUE
----- --------- ---- ------- -------- -------- ------- --------------
T001 120 USD M 2021-05-28 1970-01-01 1 120
T002 101.34 EUR M 2019-02-07 2018-01-01 2.35 238.149
T003 54.2 INR A 2018-07-30 2018-07-01 1.6 86.72
T004 10.5 EUR B 2020-08-05 2020-08-01 1.78 18.69
T005 20.45 GBP M 2021-04-07 2020-01-01 1.67 34.1515
我们可以使用正则表达式来做到这一点吗?
我也尝试过使用扫描。
<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>
解决方法
除了现在阅读他们的文档之外,我对 fluentd 没有太多经验。但是你能检查一下下面的代码片段吗?
<filter **>
@type record_transformer
enable_ruby true
<record>
status "${record['log'].downcase.include?('error:') ? 'error' : (record['log'].downcase.include?('ok:') ? 'ok' : '')}"
</record>
</filter>
我怀疑您的代码段中的 puts
会起作用。所以我对代码做了一些改动。如果这是您要找的东西,请告诉我。