如何从 JBoss Drools Eclipse 插件获取审计窗口的日志文件?

Posted

技术标签:

【中文标题】如何从 JBoss Drools Eclipse 插件获取审计窗口的日志文件?【英文标题】:How to obtain a log file for Audit Window from JBoss Drools Eclipse plugin? 【发布时间】:2017-03-28 04:28:15 【问题描述】:

我在 Eclipse Neon 中使用 JBoss Drools 6.5.0 Final 插件。创建新项目时,我选择了示例代码生成选项。当我从 Drools 5.5.0 Final 运行示例代码时,它会生成一个名为 test.log 的文件,然后我可以在 Drools 透视图的审核窗口中使用该文件。这是在这部分默认代码中完成的:

KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");

6.5.0 Final 不是这种情况,因为示例代码不包含上述行。当我尝试添加它时:

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");

KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(kSession, "test");

我得到一个编译错误:

The method newFileLogger(KnowledgeRuntimeEventManager, String) in the type KnowledgeRuntimeLoggerFactory is not applicable for the arguments (KieSession, String)

这是因为新示例代码使用KieSession 对象而不是StatefulKnowledgeSession。我尝试将 kSession 强制转换为 StatefulKnowledgeSession,但出现强制转换异常。

目前test.log文件的获取方式是什么?

【问题讨论】:

【参考方案1】:

请尝试以下代码:

KieRuntimeLogger kieLogger = ks.getLoggers().newFileLogger(kSession, "test");

别忘了使用以下方法关闭kieLogger

 kieLogger.close();

此代码 sn-p 将在您的项目文件夹中创建一个test.log 文件。如果使用 Eclipse Drools 插件,您还可以使用所谓的Audit 视图来可视化日志文件的内容。

【讨论】:

【参考方案2】:

您需要将您的 ksession 转换为 KnowledgeRuntimeEventManager :

KnowledgeRuntimeLogger 记录器 = KnowledgeRuntimeLoggerFactory.newFileLogger((KnowledgeRuntimeEventManager) kSession, "test");

【讨论】:

以上是关于如何从 JBoss Drools Eclipse 插件获取审计窗口的日志文件?的主要内容,如果未能解决你的问题,请参考以下文章

为 Eclipse 安装 Drools 插件时出错

eclipse下搭建Drools规则引擎环境

Drool实战系列之eclipse安装drools插件

开源业务规则引擎JBoss Drools

jboss规则引擎KIE Drools 6.3.0-高级讲授篇

jboss规则引擎KIE Drools 6.3.0 Final 教程