我在logstash中运行ruby脚本以从日志中提取信息。
if [status] == "Txn posted on POS"
{
ruby{
init => "@@map = {}"
code => "@@map['transactionStartTime'] = event.get('logTimestamp'),@@map['startTxnNumber'] = event.get('txnNumber'),@@map['startTillNumber'] = event.get('tillNumber')"
}
}
else if [status] == "Txn persisted in MREP"
{
ruby{
code => "if @@map['startTxnNumber'] == event.get('txnNumber')
event.set('startedTime', @@map['startTxnNumber'])
end"
}
}
由于某种原因,它没有进入if子句。我似乎无法理解这个问题,我确定没有语法错误
答案 0 :(得分:1)
我发现了问题并修复了它。 问题是由于数据类型不匹配,条件
if @@map['startTxnNumber'] == event.get('txnNumber')
txnNumber是一个字符串,startTxnNumber是一个int,所以它没有比较这些值。