Попытка написать шаблон Grok для определенных файлов журнала - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь написать шаблон Grok для файлов журнала, сгенерированных приложением.Я не могу отфильтровать несколько полей.Входной файл журнала

2019-05-02 05:32:41,017 INFO [some_class_name] Property: MatchResult(id=null, symbol=BTC_ETH, a=13172871, b=11372687136, c=1111, d=2222, e=139128979137, f=138713871, number=1.00000000000000000000, price=0.0423000, g=1, h=1, i=0.000100000000000000000000, j=0.000004525972500000000000000000000000000000000, createTime=Thu May 02 05:32:41 UTC 2019)
2019-05-02 11:06:46,356 INFO [Some_class_name] property:  User uid:2 Login ip:127.0.0.1

Обе эти строки будут в одном файле журнала.Мне нужно отфильтровать все поля в нем.Пример:

%{DATESTAMP:date} %{LOGLEVEL:log} \[%{DATA:class}\] %{NOTSPACE:Property}\: %{SPACE} %{NOTSPACE:user} %{WORD:uid}

Я пытался с этим шаблоном, после uid (для 2-й строки в файле журнала, я не могу получить число т.е. uid: 2) Аналогично, для первой строки, я сделал доСвойство: MatchResult, после '(' я не могу получить отдельные поля. Я делаю это впервые. Пожалуйста, дайте мне знать, если нужно больше информации. Спасибо

1 Ответ

1 голос
/ 02 мая 2019

Попробуйте:

%{DATESTAMP:date} %{LOGLEVEL:log} \[%{DATA:class}\] [P|p]roperty\: (%{NOTSPACE:property}\(%{GREEDYDATA:arguments}\))?( User%{SPACE}(%{NOTSPACE:user})?%{SPACE}uid\:%{WORD:uid} Login ip\:%{IP:ip})?

Протестировано в Elasticsearch 6,7

...