У меня есть такой журнал:
ERROR_MESSAGE:Invalid Credentials,THROTTLED_OUT_REASON:API_LIMIT_EXCEEDED
Я пытаюсь разобрать его с помощью grok с помощью отладчика grok:
ERROR_MESSAGE:%{GREEDYDATA:errorMassage},THROTTLED_OUT_REASON:%{GREEDYDATA:throttledOutReason}
Это работает, но иногда журналпоставляется без поля THROTTLED_OUT_REASON
.
ERROR_MESSAGE:%{GREEDYDATA:errorMassage}
В этом случае я попробовал приведенный ниже код, поскольку THROTTLED_OUT_REASON
является необязательным полем.
ERROR_MESSAGE:%{GREEDYDATA:errorMassage}(,THROTTLED_OUT_REASON:%{GREEDYDATA:throttledOutReason})?
Так что это должно работать в обоих случаях.Заданный вывод для журнала с необязательным полем:
{
"errorMassage": [
[
"Invalid Credentials,THROTTLED_OUT_REASON:API_LIMIT_EXCEEDED"
]
],
"throttledOutReason": [
[
null
]
]
}
Но ожидаемый вывод для журнала с необязательным полем:
{
"errorMassage": [
[
"Invalid Credentials"
]
],
"throttledOutReason": [
[
"API_LIMIT_EXCEEDED"
]
]
}
ожидаемый вывод для журнала без необязательного поля:
{
"errorMassage": [
[
"Invalid Credentials"
]
],
"throttledOutReason": [
[
null
]
]
}
Кто-нибудь может предложить решение, которое дает правильный вывод для обоих типов журналов?