是否可以使用调试事件侦听器将 Drools 的默认 stderr 输出更改为 stdout 中的 INFO?
Can Drools' default stderr output be changed to INFO in stdout with debug event listeners?
我已将 Agenda
和 RuleRuntime
事件侦听器添加到我的无状态 KIE 会话中,但所有输出都显示为 ERROR [stderr] ...
;是否可以将 session/listeners 配置为使用 stdout
并控制日志级别(最好是 INFO
)?
我看到了一个几乎相同的 Google Groups KIE 执行服务器问题,但我将 drools 引擎嵌入到 Thorntail 应用程序中。
我正在使用 org.kie.kie-api
、org.kie.kie-cie
、org.drools.drools-core
的无状态 KIE 会话和 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 and DebugRuleRuntimeEventListener can accept a 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 来覆盖打印消息的位置。
is it possible to configure the session/listeners to use stdout
and control log levels (preferably INFO
)?
您可以使用来自 drools-core
依赖项的包 org.drools.core.event
中的 Debug*Listener
(s),它通过 SLF4j 默认情况下已经按照您描述的方式工作,即发出默认 info
级。如果您已将日志记录配置为发送到标准输出,作为默认做法,它将开箱即用。
这些只是一些 "utility" 默认实现;或者,您可以实现自己的侦听器以在您最喜欢的情况下工作。
我已将 Agenda
和 RuleRuntime
事件侦听器添加到我的无状态 KIE 会话中,但所有输出都显示为 ERROR [stderr] ...
;是否可以将 session/listeners 配置为使用 stdout
并控制日志级别(最好是 INFO
)?
我看到了一个几乎相同的 Google Groups KIE 执行服务器问题,但我将 drools 引擎嵌入到 Thorntail 应用程序中。
我正在使用 org.kie.kie-api
、org.kie.kie-cie
、org.drools.drools-core
的无状态 KIE 会话和 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 and DebugRuleRuntimeEventListener can accept a 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 来覆盖打印消息的位置。
is it possible to configure the session/listeners to use
stdout
and control log levels (preferablyINFO
)?
您可以使用来自 drools-core
依赖项的包 org.drools.core.event
中的 Debug*Listener
(s),它通过 SLF4j 默认情况下已经按照您描述的方式工作,即发出默认 info
级。如果您已将日志记录配置为发送到标准输出,作为默认做法,它将开箱即用。
这些只是一些 "utility" 默认实现;或者,您可以实现自己的侦听器以在您最喜欢的情况下工作。