2012-12-06 63 views
2

我有一個自定義格式的日誌文件,日期字段是這樣的:轉換日期MMM DD HH:MM:SS爲logstash

Dec 4 23:59:21 
Nov 21 23:59:21 
我logstash配置

我有這樣的過濾器:

date { 
    type => "custom" 
    # tell it the format 
    custom_timestamp => ["MMM d HH:mm:ss", "MMM dd HH:mm:ss"] 
    # locale didn't help 
    locale => "en" 
} 
mutate{ 
    type => "custom" 
    # replace the timestamp 
    replace => ["@timestamp", "%{custom_timestamp}"] 
} 

它應該用日誌中的自定義日誌替換logstash時間戳(我現在正在從舊日誌回填它來測試)。

如果我打開調試標誌,並輸出到標準輸出,它表明我@timestamp已被替換custom_timestamp,但我得到一個錯誤信息,告訴我它無法導入:

:exception=>java.lang.IllegalArgumentException: Invalid format: "Dec 4 23:59:21" 

我該怎麼必須做的轉換日期格式?

回答

1

原來,我工作的樣本是錯誤的。你並不需要發生變異更換,該配置現在是這樣的:在這個崗位

date { 
    type => "custom" 
    # tell it the format 
    custom_timestamp => ["MMM d HH:mm:ss", "MMM dd HH:mm:ss"] 
    # date format is english, computer might not be 
    locale => "en" 
} 
mutate{ 
    type => "custom" 
    #other mutations go here 
} 
+1

「類型」現在已不 – tjrobinson

0

兩個誤解:

  1. 生成Java異常,因爲在您的格式不YEAR,因此它不能安全地解析日期。
  2. 如果您希望其他應用程序將您的舊導入日誌看作一致的時間線,則需要運行mutate。否則,當您導入所有舊日誌時,只會看到幾分鐘的事件集中(導入期間)。

除此之外,良好的提問/回答,它幫助我儘快回到賽場上我的具體問題;)

+0

在我的答案或問題?我的回答讓它爲我工作,但如果需要它,我可以清除它。 – SeanJA

相關問題