如何在KIE服务器中跟踪drools规则执行?

时间:2017-06-20 18:34:14

标签: drools drools-guvnor drools-kie-server drools-kie-workbench

如何在KIE服务器上运行规则应用程序时启用规则引擎跟踪/日志记录?

规则应用程序是在Workbench中创建的,不包含自定义代码。我能够使用KIE REST API执行规则,但规则应用程序没有产生预期的结果。

环境:

Win7的

Tomcat 9

Drools 6.5.0-Final

更新

我尝试了以下步骤:

  1. 使用git
  2. 在本地克隆工作台项目
  3. 将logback.xml添加到项目的根目录
  4. 将更改推回工作台git repo
  5. 在工作台项目编辑器视图中添加了作为依赖项的回溯
  6. 更新项目版本并重新部署到容器
  7. 当我这样做时,它忽略了我的日志设置,但是将日志消息无休止地发送到控制台,告诉我它无法实例化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
    

1 个答案:

答案 0 :(得分:0)

将以下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,如果不存在,则创建文本文件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服务器和工作台产生垃圾邮件和含义但有用的输出。