我在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
文件的当前方式是什么?
答案 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
视图来可视化日志文件的内容。