【问题标题】:How can I trace drools rule execution in KIE server?如何在 KIE 服务器中跟踪 drools 规则执行?
【发布时间】:2017-11-23 10:40:36
【问题描述】:

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

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

环境:

Win7

雄猫 9

Drools 6.5.0-决赛

更新:

我尝试了以下步骤:

  1. 使用 git 在本地克隆工作台项目
  2. 将 logback.xml 添加到项目的根目录
  3. 将更改推送回工作台 git 存储库
  4. 在工作台项目编辑器视图中添加了 logback 作为依赖项
  5. 更新项目版本并重新部署到容器中

当我这样做时,它会忽略我的日志记录设置,但垃圾邮件会无休止地将消息记录到控制台,告诉我它无法实例化 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

【问题讨论】:

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


    【解决方案1】:

    将以下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 jar 是否已经存在,或者我是否添加了它们。)

    对于 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 服务器和工作台产生垃圾邮件和神秘但有用的输出。

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2021-11-30
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多