У меня есть Друпала сторожевой системный журнал файл, который я хочу, чтобы разобрать на по существу два вложенные полеи, системный журнал часть и часть сообщения, так что я получаю этот результатимеют Grok фильтр создавать вложенные поля в результате
syslogpart: {
timestamp: "",
host: "",
...
},
messagepart:{
parsedfield1: "",
parsedfield2: "",
...
}
Я попытался сделать пользовательский шаблон, который выглядит следующим образом:
DRUPALSYSLOG (%{SYSLOGTIMESTAMP:date} %{SYSLOGHOST:logsource} %{WORD:program}: %{URL:domain}\|%{EPOCH:epoch}\|%{WORD:instigator}\|%{IP:ip}\|%{URL:referrer}\|%{URL:request}\|(?<user_id>\d+)\|\|)
, а затем запустить match => ['message', '%{DRUPALSYSLOG:drupal}'}
, но я не получаю вложенный ответ, я получаю текстовый блок drupal: "ALL THE MATCHING FIELDS IN ONE STRING"
, а затем все совпадения отдельно, но не вложенные под drupal, а на том же уровне.
Синтаксис кронштейн поддерживается непосредственно в определении шаблона. Не нужно мутировать/переименовывать! См. Ответ Жюльена ниже. –