2

概要: 次のような日付形式のログがあります。

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 { }
}

私は本当にここで立ち往生しています。専門家の助けが必要です。

ありがとう。

4

3 に答える 3

4

mの代わりに小文字を指定しMました。mは分単位、M月単位です。

試す:

yyyy/MM/dd-HH:mm:ss.SSS
于 2013-08-06T07:57:19.540 に答える
1

コマンド ラインから詳細モード (-vv) を有効にするまで、エラーからすぐにわからないのは、「日付」フィルターが JodaTime ライブラリを使用していることです。私の場合、前のステップの正規表現を使用して日付と時刻を解析していました。JodaTime が期待するものではないため、これは明らかに機能しません。使用可能な日時形式については、DateTimeFormat のドキュメントを参照してください。

于 2013-10-05T20:23:57.187 に答える