Удалите символы, соответствующие регулярному выражению в событии log4j2, с помощью параметра replace

#regex #log4j2

Вопрос:

Учитывая это событие журнала:

завершено: задача = { 'status' : 0 , «задача»: «{«идентификатор»: 9149263125397547267, «процесс» : «ЗНАК», «вход»: «/file/log4j-api-2.11.0.jar’ }’ }

Как я могу преобразовать выделенную часть в status: 0 регулярное выражение?

До сих пор мне удавалось получить эту часть complete: task = { 'status' : 0, , используя следующий код:

/^(?:[^:]*[:]){2}[^:]*([,])/

Есть какие-нибудь мысли?

Комментарии:

1. Не могли бы вы также поделиться последней строкой в качестве вывода, который вы предполагаете?

2. Что за код вокруг этого?

3. Я ожидаю, что мы выйдем status: 0 на замену $1 : S2 .

Ответ №1:

Шаблон: '(status)'s:s(d )

Заменять: $1 : $2

Демо: https://regex101.com/r/nb53XO/1

Комментарии:

1. Ха, интересно, я вижу, что шаблон работает, но замена, похоже, работает не так, как ожидалось. Все еще получаю всю строку о коробке подстановки.

2. Не могли бы вы, пожалуйста, поделиться ссылкой для того же? это поможет мне в дальнейшем

3. ммм… Поэтому я пытаюсь настроить параметр %replace в шаблоне log4j2 следующим образом: <PatternLayout pattern="%replace{%m}{'(status)'s:s(d )}{$1:$2}%n" /> , я ожидаю получить событие журнала, подобное этому: status:0 но вместо этого я получаю: complete: task = { 'status' : 0, 'task' : '{ 'id' : 9149263125397547267, 'process' : 'A-SIGN', 'in' : '/file/log4j-api-2.11.0.jar' }' }

4. Я на самом деле протестировал вашу демо-ссылку по адресу regex101.com/r/nb53XO/1 .

5. Можете ли вы попробовать вот это: regex101.com/r/nb53XO/2