Шаблон GROK для следующего журнала - PullRequest
0 голосов
/ 07 февраля 2020

Мне трудно придумать шаблон для следующей записи в журнале.

[INFO ] 2020-02-07 16:11:56.148 [localhost-startStop-1] DOMUtilities - System property DocumentBuilderCacheBlockSize is not defined, using default 25

Вот что у меня есть.

  %{LOGLEVEL:loglevel} %{YEAR} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}[%{DATA:threadName}\]\s+\%{DATA:javafile}\s[-:]\s+%{GREEDYDATA:message}

Может кто-нибудь заполнить меня на что я делаю не так, пожалуйста? Я знаю, что проблема связана с форматом даты, но я просто не могу найти ответ.

1 Ответ

1 голос
/ 09 февраля 2020

В вашем шаблоне grok есть несколько проблем (порядок основан на вхождении в шаблоне grok):

  • Уровень журнала находится в квадратных скобках. Шаблон LOGLEVEL не содержит никаких символов, кроме определенных слов. Кроме того, после лог-уровня и перед закрывающей квадратной скобкой есть пробел
  • Ваши значения даты вашей метки времени (год, месяц, день) разделены дефисами, которые вы вообще не указали.
  • Шаблон MONTH предназначен для полного и / или сокращенного месяца имен , например, Фев или Февраль . Вместо этого вам необходимо использовать MONTHNUM2 -pattern, который использует числа.
  • Между секундами и именем потока есть пробел
  • Вам необходимо экранировать открывающую квадратную скобку в [%{DATA:threadName}\], поскольку это специальный символ в регулярном выражении
  • Нет необходимости в бэксле sh до %{DATA:javafile}

Пожалуйста, ознакомьтесь более подробно с logsta sh рисунками grok и их определения.

Используя предоставленный вами пример журнала, я разработал следующий шаблон:

^\[%{LOGLEVEL:loglevel}\s?+\]\s+%{YEAR}-%{MONTHNUM2}-%{MONTHDAY}\s+%{HOUR}:%{MINUTE}:%{SECOND}\s+\[%{DATA:threadName}\]\s+%{DATA:javafile}\s[-:]\s+%{GREEDYDATA:message}

Вы можете проверить свои шаблоны на этой странице .

Надеюсь, я смогу вам помочь.

...