Logstash中的Ruby脚本

时间:2017-10-13 06:40:27

标签: ruby elasticsearch logstash

我在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子句。我似乎无法理解这个问题,我确定没有语法错误

1 个答案:

答案 0 :(得分:1)

我发现了问题并修复了它。 问题是由于数据类型不匹配,条件

if @@map['startTxnNumber'] == event.get('txnNumber')

txnNumber是一个字符串,startTxnNumber是一个int,所以它没有比较这些值。