Фильтр Grok, чтобы извлечь сообщение из двух конкретных слов - PullRequest
0 голосов
/ 02 июля 2018

пример файла журнала ниже

2018-07-02 09:35:57 991 [INFO] from application in pool-2-thread-9 - Authenticate document processing time for transactionId : 1271400374895007_node1 documentType : Passport is 1629 msec

Я написал фильтр grok для извлечения некоторых полей, таких как транзакция, тип документа, продолжительность

%{TIMESTAMP_ISO8601:timestamp} (\[%{WORD:loglevel}\]) (?<logger>(?:[a-zA-Z0-9-]+\.)*[A-Za-z0-9$]+)\s+(-\s+)? %{GREEDYDATA} .*transactionId : %{WORD:transactionid} documentType : %{WORD:document type} is (?<duration>.*msec

Может кто-нибудь предложить, как извлечь данные между двумя конкретными словами "-" (между сообщениями) "время обработки"

1 Ответ

0 голосов
/ 03 июля 2018

Вы можете создать собственный шаблон, чтобы соответствовать всем между - и processing time,

(?<pool_thread>\w+[-]\d+[-]\w+[-]\d+\s*?)-(?<custom_word>.*?)(processing time)

Это выведет,

{
  "pool_thread": [
    [
      "pool-2-thread-9 "
    ]
  ],
  "custom_word": [
    [
      " Authenticate document "
    ]
  ]
}
...