转换日期MMM dd HH:mm:ss用于logstash

时间:2012-12-06 15:00:39

标签: 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时间戳(我现在从旧日志回填测试)。

如果我打开调试标志并输出到stdout,它会显示@timestamp已替换为custom_timestamp,但我收到一条错误消息,告诉我无法导入:

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

如何转换日期格式?

2 个答案:

答案 0 :(得分:1)

原来我正在处理的样本是错误的。你不需要mutate替换,配置就是这个:

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 :(得分:0)

这篇文章中有两个误解:

  1. 生成java异常是因为格式中没有YEAR,因此无法安全地解析日期。
  2. 如果您希望其他应用程序将旧的导入日志视为一致的时间轴,则需要运行mutate。否则,当您导入所有旧日志时,您只会看到几分钟的事件集中(在导入期间)。
  3. 除此之外,好的问题/答案,它帮助我重新回到我的特定问题;)