我已经将Agenda
和RuleRuntime
事件侦听器添加到我的无状态 KIE 会话中,但所有输出都显示为ERROR [stderr] ...
;是否可以将会话/侦听器配置为使用stdout
和控制日志级别(最好是INFO
(?
我看到过一个几乎相同的 KIE 执行服务器的 Google 网上论坛问题,但我正在将流口水引擎嵌入到 Thorntail 应用程序中。
我正在使用无状态 KIE 会话和 org.kie.kie-api
、org.kie.kie-cie
、org.drools.drools-core
的 7.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
级别发出。假设作为默认做法,您已将日志记录配置为发出到标准输出,它将开箱即用。
这些只是一些"实用"的默认实现;或者,您可以实现自己的监听器以在自己喜欢的最佳环境中工作。