Можно ли изменить стандартный вывод Drools на stderr на INFO в stdout с прослушивателями событий отладки? - PullRequest
1 голос
/ 21 июня 2019

Я добавил прослушиватели событий Agenda и RuleRuntime в мой сеанс KIE без сохранения состояния, но все выходные данные отображаются как ERROR [stderr] ...;Можно ли настроить сеанс / прослушиватели для использования stdout и управления уровнями журнала (предпочтительно INFO)?

Я видел почти идентичный Google Groups вопрос для выполнения KIEСервер, но я встраиваю движок drools в приложение Thorntail.

Я использую сеансы KIE без сохранения состояния и версию 7.23.0.Final из org.kie.kie-api, org.kie.kie-cie, org.drools.drools-core.Отрывок создания моего сеанса без сохранения состояния:

KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.getKieClasspathContainer();
StatelessKieSession statelessKieSession = kieContainer.newStatelessKieSession();
statelessKieSession.addEventListener(new DebugAgendaEventListener());
statelessKieSession.addEventListener(new DebugRuleRuntimeEventListener());

Я заметил, что один из конструкторов DebugAgendaEventListener и DebugRuleRuntimeEventListener может принимать PrintStream аргумент, могу ли я использовать это для замены значения по умолчанию stderr?

Примеры выходных данных, зарегистрированных в консоли:

ERROR [stderr] (default task-1) ==>[ActivationCreatedEvent: getActivation()=[[ ...]]]
ERROR [stderr] (default task-1) ==>[BeforeActivationFiredEvent:  getActivation()=[[...]]]
... Rule fired ...
ERROR [stderr] (default task-1) ==>[AfterActivationFiredEvent: getActivation()=[[ ... ]]]

Я не понимаю, почему они вошли вstderr по умолчанию они отображают больше информации уровня DEBUG / TRACE, поэтому хотели бы, чтобы они выводили в stdout, если это возможно.

1 Ответ

1 голос
/ 22 июня 2019

Debug*Listener (s) в kie-api по умолчанию выдает стандартную ошибку, чтобы работать независимо от конфигурации логов. Вы действительно можете передать пользовательский PrintStream, чтобы переопределить, где вывод сообщения печатается, используя этот конструктор.

возможно ли настроить сеанс / прослушиватели на использование stdout и управление уровнями журнала (предпочтительно INFO)?

Вы можете использовать Debug*Listener (s) в пакете org.drools.core.event из зависимости drools-core, которая с помощью SLF4j уже работает по умолчанию, как вы описываете, то есть по умолчанию на уровне info. При условии, что в качестве практики по умолчанию вы настроили ведение журнала на стандартный вывод, он будет работать таким образом, из коробки.

Это просто некоторые "полезные" реализации по умолчанию; В качестве альтернативы, вы можете реализовать свои собственные Слушатели, чтобы работать в том виде, который вы предпочитаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...