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

时间:2016-11-14 13:54:43

标签: java eclipse jboss drools

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

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文件的当前方式是什么?

2 个答案:

答案 0 :(得分:0)

你需要将你的ksession投射到KnowledgeRuntimeEventManager:

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

答案 1 :(得分:0)

请尝试以下代码:

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

也不要忘记使用以下命令来关闭kieLogger

 kieLogger.close();

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