2012-12-06 64 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

相关问题