我在我的无状态KIE会话中添加了Agenda
和RuleRuntime
事件监听器,但是所有输出都显示为ERROR [stderr] ...
;是否可以将会话/侦听器配置为使用stdout
和控制日志级别(最好是INFO
)?
我已经看到有关KIE Execution Server几乎相同的Google Groups问题,但我正在将Drools引擎嵌入Thorntail应用程序中。
我正在使用无状态KIE会话以及7.23.0.Final
,org.kie.kie-api
,org.kie.kie-cie
的{{1}}版本。创建我的无状态会话的摘录是:
org.drools.drools-core
我注意到DebugAgendaEventListener和DebugRuleRuntimeEventListener上的构造函数之一可以接受PrintStream参数,我可以用它代替默认的KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.getKieClasspathContainer();
StatelessKieSession statelessKieSession = kieContainer.newStatelessKieSession();
statelessKieSession.addEventListener(new DebugAgendaEventListener());
statelessKieSession.addEventListener(new DebugRuleRuntimeEventListener());
吗?
记录到控制台的示例输出是:
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
如果可能的话。
答案 0 :(得分:1)
默认情况下,无论任何日志记录配置如何,kie-api中的Debug*Listener
都会发出标准错误以起作用。您确实可以通过使用该构造函数传递自定义PrintStream来覆盖打印消息发出的位置。
是否可以将会话/侦听器配置为使用
stdout
和控制日志级别(最好是INFO
)?
您可以使用Debug*Listener
依赖项的软件包org.drools.core.event
中的drools-core
(s),通过SLF4j,它已经默认以您描述的方式工作,并以{{默认情况下为1}}级。前提是您已默认将日志记录配置为发出标准输出,它将以开箱即用的方式工作。
这些只是一些“实用程序”的默认实现;或者,您可以实现自己的侦听器以在您最喜欢的环境中工作。