3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LogstashでString型をDate型に変換することに苦戦した話

Posted at

目的

下記フォーマットの日付文字列を、Date型に変換したかった。

Sat Aug 10 17:15:31 JST 2019

実施内容

次のフィルターで変換を試してみたが、String型のままでDate型に変換されず...

logstash.conf
date {
  match => ["SampleTimeStamp", "EEE MMM dd HH:mm:ss ZZZ yyyy"]
  target => "SampleTimeStamp"
}

うーん、Date filter pluginの公式ドキュメントを読んでも、コードの書き方間違ってない気がするんだけどなぁ~。

Date filter plugin公式ドキュメント:https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html

ここで「JST」の文字列が、タイムゾーンの標準的な形式では無いのでは?と疑い始めた。

僕の直観は当たっていた!疑問通りで、Joda-Timeのタイムゾーン一覧を確認すると「JST」が存在してないじゃないか...

Joda-Time タイムゾーン一覧:http://joda-time.sourceforge.net/timezones.html

更にJoda-Timeのドキュメントを読み進めると、以下の記述を発見した。

'       escape for text              delimiter

なるほど、テキストとして扱ってシングルコートでエスケープしてあげれば良いのか。早速、試してみた。

logstash.conf
date {
  match => ["SampleTimeStamp", "EEE MMM dd HH:mm:ss 'JST' yyyy"]
  target => "SampleTimeStamp"
}

見事にString型からDate型に変換成功!!!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?