2013-05-13 157 views
2

摘要:我有我的日誌的日期格式如下所示:Logstash日期解析錯誤

2013/05/09-05:19:16.772 

現在我想用logstash和發送這些日誌以彈性搜索。但問題是,我希望時間戳記值應該是日誌的值,而不是當前時間。

因此,我寫了以下內容。這將失敗,這樣說:

Invalid format: "2013/05/09-05:19:16.876" is malformed at "/05/09-05:19:16.876", :backtrace=>["org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)" 

我的conf文件是:

input { 
    stdin { 
     type => "stdin-type" 
    } 
} 

filter { 
    grok { 
    type => "stdin-type" 
    patterns_dir=>["./patterns"] 
    pattern => "%{PARSE_ERROR}" 
    add_tag=>"%{type1},%{type2},%{slave},ERR_SYSTEM" 
    } 

    date { 
    type => "stdin-type" 
    match=>["ts","yyyy/mm/dd-HH:mm:ss.SSS"] 
    locale=>"en" 
    } 

    mutate { 
    type=>"stdin-type" 
    replace => ["@message", "%{message}" ] 
    replace => ["@timestamp", "%{ts}" ] 
    } 
} 

output { 
    stdout { debug => true debug_format => "json"} 
    elasticsearch { } 
} 

我真的被困在這裏。 需要一些專家的幫助。

謝謝。

回答

0

嘗試

YYYY/MM/dd-HH:mm:ss.SSS 

代替

4

你specifed小寫m代替Mm是分鐘,M是幾個月。

嘗試:

yyyy/MM/dd-HH:mm:ss.SSS 
1

直到啓用詳細模式的不是從錯誤顯而易見的(-vv)通過命令行的是,「日期」濾波器is using the JodaTime library。在我的情況下,我使用上一步中的正則表達式來解析日期和時間。這顯然不起作用,因爲這不是JodaTime所期望的。對於允許的日期時間格式,您應該查看DateTimeFormat documentation