logstash在OUTPUT时重新格式化日期

时间:2014-04-03 00:25:27

标签: date csv printf logstash

我正在输出为CSV,我希望我的日期采用ISO8601格式,例如2014-04-02T19:21:36.292Z,但我会在我的csv中获取Mar 27 2014 17:56:33等日期。

我可以创建第二个中间字符串变量来进行格式化,但它会产生相同的结果。

我看到Logstash中有一个“sprintf”函数,但似乎你可以做EITHER变量引用或日期格式(我假设它会得到当前的系统日期时间),但我不认为你可以做到。换句话说,我认为它不允许你将日期格式应用于现有的日期变量,或者如果它存在,我不确定语法是什么。

Google和堆栈上存在大量错误命中,但都是关于解析。

具有讽刺意味的是,stdout恰好使用stdout { debug => true codec => "rubydebug"}以我想要的格式输出。也许这可能在某种程度上有助于我的情况,不确定?虽然其他人可能想要一些其他任意格式。

1 个答案:

答案 0 :(得分:1)

试试这个。添加新的"日期"然后输出到csv。

filter {
   ruby {
        code => '
            require "time"
            event["date"] = Time.parse(event["@timestamp"].to_s).iso8601;
        '
   }
}