Этот вопрос задавался несколько раз ранее, и есть некоторые ответы, но ни один из них не подходит для того требования, которое у меня есть, потому что ответы направлены либо на консольный, либо на файловый аппендеры.
Конфигурация форматера обоих этих аппендеров настроена через автономный или домен xml.
Однако я использую json /logstash formatter
.
Моя проблема в том, что сообщения, отправленные на stdout
или stderr
, переносятся на Redhat jboss eap
с уровнем журнала как INFO (независимо от их уровня), и каждая строка трассировки стека обрабатывается как отдельный JSON блок.
Из-за этого logsta sh интерпретирует все сообщения как INFO, а не как предупреждение или ошибки, и это выглядит очень уродливо и трудно интерпретировать в кибане.
Фрагмент журнала сервера jboss.
{
"timestamp": "2020-02-19T13:19:18.743Z",
"sequence": 249,
"loggerClassName": "org.jboss.logmanager.Logger",
"loggerName": "**stdout**",
"level": "**INFO**",
"message": "2020-02-19T14:19:18.000743+0100 [DBQueue_3] **ERROR** **com.uuapp.data** - Invalid operation name in participant message \"Pmsg:Id=0,Sender=0,Consumer=0,ActIndex=0,Oper=null,Flag=0, Priority=8\"",
"threadName": "DBQueue_3",
"threadId": 530,
"mdc": {
},
"ndc": "",
"hostName": "uu-app-18934",
"processName": "jboss-modules.jar",
"processId": 22061
}
Есть ли способ обойти эту раздражающую функцию и заставить jboss использовать журналы, отправленные из консоли приложения logback, как есть? Atleast объединяет трассировку стека в один json блок?
Обратите внимание, что приложение использует logback. Я знаю, что logback имеет форматеры json, которые я могу использовать, но мои руки связаны, поскольку приложение является своего рода продуктом для детских кроваток, разработанным в java, и использует 3pp jar-файлы, которые не обновляются для использования форматеров json и не разрешено переопределить войну.
Итак, если нужно что-то сделать, нужно сделать на стороне сервера.
Любая помощь приветствуется.