Drools 的默认标准输出是否可以在带有调试事件侦听器的 stdout 中更改为 INFO?



我已经将AgendaRuleRuntime事件侦听器添加到我的无状态 KIE 会话中,但所有输出都显示为ERROR [stderr] ...;是否可以将会话/侦听器配置为使用stdout和控制日志级别(最好是INFO(?

我看到过一个几乎相同的 KIE 执行服务器的 Google 网上论坛问题,但我正在将流口水引擎嵌入到 Thorntail 应用程序中。

我正在使用无状态 KIE 会话和 org.kie.kie-apiorg.kie.kie-cieorg.drools.drools-core7.23.0.Final 版本。 创建我的无状态会话的摘录是:

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

默认情况下,kie-api 中的Debug*Listener (s( 发出标准错误以工作,无论任何日志记录配置如何。您确实可以通过使用该构造函数传递自定义 PrintStream 来覆盖打印消息发出的位置。

是否可以将会话/侦听器配置为使用stdout和控制日志级别(最好是INFO(?

您可以在drools-core依赖项的包org.drools.core.event中使用Debug*Listener,默认情况下,SLF4j 已经按照您描述的方式工作,默认情况下在info级别发出。假设作为默认做法,您已将日志记录配置为发出到标准输出,它将开箱即用。

这些只是一些"实用"的默认实现;或者,您可以实现自己的监听器以在自己喜欢的最佳环境中工作。

最新更新