如何在 KIE 服务器中跟踪 drools 规则的执行情况?
How can I trace drools rule execution in KIE server?
当规则应用程序在 KIE 服务器上 运行 时,如何启用规则引擎 tracing/logging?
规则应用程序是在 Workbench 中创建的,不包含自定义代码。我能够使用 KIE REST API 执行规则,但规则应用程序没有产生预期的结果。
环境:
Win7
Tomcat 9
Drools 6.5.0-Final
更新:
我尝试了以下步骤:
- 使用 git
在本地克隆 workbench 项目
- 将logback.xml添加到项目的根目录
- 将更改推送回 workbench git 存储库
- 在 workbench 项目编辑器视图中添加了 logback 作为依赖项
- 更新项目版本并重新部署到容器
当我这样做时,它忽略了我的日志记录设置,但垃圾邮件无休止地向控制台记录消息,告诉我它无法实例化 logback 类:
20-Jun-2017 16:58:29.070 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextSelector due to ch.qos.logback.classic.selector.ContextSelector
20-Jun-2017 16:58:29.083 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextJNDISelector due to ch.qos.logback.classic.selector.ContextJNDISelector
20-Jun-2017 16:58:29.101 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.D
efaultContextSelector due to ch.qos.logback.classic.selector.DefaultContextSelector
将以下 jar 添加到 tomcat 的 /lib
文件夹:
logback-classic-1.1.3.jar
logback-core-1.1.3.jar
slf4j-api-1.7.2.jar
slf4j-ext-1.7.2.jar
(不记得 slf4j 罐子是否已经存在,或者我是否添加了它们。)
对于 Windows,如果 none 存在,则创建一个文本文件 bin/setenv.bat
。
在setenv.bat
中添加以下设置:
set "JAVA_OPTS=%JAVA_OPTS% -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile="%CATALINA_HOME%\conf\logback.groovy""
这些控制台侦听器指示 logback 告诉您 logback 配置是否错误。另一个设置是您的 logback 配置文件的位置。
对于跟踪规则,我的 logback.groovy
看起来像这样:
import java.nio.charset.Charset
appender('STDOUT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} %-5level %logger{5} - %msg%n"
}
}
appender('STDOUT-SHORT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} - %msg%n"
}
}
root(WARN, ["STDOUT"])
logger("org.apache", WARN, ["STDOUT"], false)
logger("org.kie.server", WARN, ["STDOUT"], false)
logger("org.kie.server.controller", DEBUG, ["STDOUT"], false)
logger("org.guvnor.common.services.builder.IncrementalBuilderExecutorManagerFactoryImpl", ERROR, ["STDOUT"], false)
logger("bitronix", ERROR, ["STDOUT"], false)
logger("org.kie.api.event.rule", TRACE, ["STDOUT"], false)
logger("org.drools.core", TRACE, ["STDOUT-SHORT"], false)
logger("org.uberfire.commons.async.SimpleAsyncExecutorService", ERROR, ["STDOUT"], false)
这些设置会从 KIE 服务器和 Workbench.
生成垃圾邮件和神秘但有用的输出
当规则应用程序在 KIE 服务器上 运行 时,如何启用规则引擎 tracing/logging?
规则应用程序是在 Workbench 中创建的,不包含自定义代码。我能够使用 KIE REST API 执行规则,但规则应用程序没有产生预期的结果。
环境:
Win7
Tomcat 9
Drools 6.5.0-Final
更新:
我尝试了以下步骤:
- 使用 git 在本地克隆 workbench 项目
- 将logback.xml添加到项目的根目录
- 将更改推送回 workbench git 存储库
- 在 workbench 项目编辑器视图中添加了 logback 作为依赖项
- 更新项目版本并重新部署到容器
当我这样做时,它忽略了我的日志记录设置,但垃圾邮件无休止地向控制台记录消息,告诉我它无法实例化 logback 类:
20-Jun-2017 16:58:29.070 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextSelector due to ch.qos.logback.classic.selector.ContextSelector
20-Jun-2017 16:58:29.083 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextJNDISelector due to ch.qos.logback.classic.selector.ContextJNDISelector
20-Jun-2017 16:58:29.101 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.D
efaultContextSelector due to ch.qos.logback.classic.selector.DefaultContextSelector
将以下 jar 添加到 tomcat 的 /lib
文件夹:
logback-classic-1.1.3.jar
logback-core-1.1.3.jar
slf4j-api-1.7.2.jar
slf4j-ext-1.7.2.jar
(不记得 slf4j 罐子是否已经存在,或者我是否添加了它们。)
对于 Windows,如果 none 存在,则创建一个文本文件 bin/setenv.bat
。
在setenv.bat
中添加以下设置:
set "JAVA_OPTS=%JAVA_OPTS% -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile="%CATALINA_HOME%\conf\logback.groovy""
这些控制台侦听器指示 logback 告诉您 logback 配置是否错误。另一个设置是您的 logback 配置文件的位置。
对于跟踪规则,我的 logback.groovy
看起来像这样:
import java.nio.charset.Charset
appender('STDOUT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} %-5level %logger{5} - %msg%n"
}
}
appender('STDOUT-SHORT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} - %msg%n"
}
}
root(WARN, ["STDOUT"])
logger("org.apache", WARN, ["STDOUT"], false)
logger("org.kie.server", WARN, ["STDOUT"], false)
logger("org.kie.server.controller", DEBUG, ["STDOUT"], false)
logger("org.guvnor.common.services.builder.IncrementalBuilderExecutorManagerFactoryImpl", ERROR, ["STDOUT"], false)
logger("bitronix", ERROR, ["STDOUT"], false)
logger("org.kie.api.event.rule", TRACE, ["STDOUT"], false)
logger("org.drools.core", TRACE, ["STDOUT-SHORT"], false)
logger("org.uberfire.commons.async.SimpleAsyncExecutorService", ERROR, ["STDOUT"], false)
这些设置会从 KIE 服务器和 Workbench.
生成垃圾邮件和神秘但有用的输出