我已经添加Agenda
和RuleRuntime
事件侦听器来我的无状态会话KIE但所有的输出显示为ERROR [stderr] ...
; 是否可以配置会话/侦听器以使用stdout
和控制日志级别(最好是INFO
)?
我已经看到有关KIE Execution Server的几乎相同的Google网上论坛问题,但是我将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
可能的位置。
Debug*Listener
默认情况下,无论任何日志记录配置如何,kie-api中的(s)都会发出标准错误以起作用。实际上,您可以通过使用该构造函数传递自定义PrintStream来覆盖打印消息发出的位置。
是否可以配置会话/侦听器以使用
stdout
和控制日志级别(最好是INFO
)?
您可以使用Debug*Listener
在包(S)org.drools.core.event
从drools-core
依赖,它通过SLF4J的方式在你所描述的方法,那就是发射波长为工程已经默认info
默认级别。假设您已将日志配置为默认发送到标准输出,那么它将以开箱即用的方式工作。
这些只是一些“实用程序”的默认实现。或者,您可以实现自己的侦听器以在您最喜欢的环境中工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句