2017-10-13 35 views
1

我在logstash中運行ruby腳本以從日誌中提取信息。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" 
     } 

}

由於某種原因,它不是,如果子句中來。我似乎無法理解這個問題,我確信沒有語法錯誤

+0

你可以顯示一個應該觸發if子句的示例日誌行嗎? – Val

+0

好吧,如果我告訴你日誌但是在這裏你會看到: –

+0

你也可以在輸出部分添加'stdout {codec => ruby​​debug}'並顯示結束事件如何看起來像 – Val

回答

1

我發現了問題並修復了它。 問題是因爲數據類型不匹配,條件

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

txnNumber是一個字符串,startTxnNumber是int的,所以它不是比較這些值。