【发布时间】:2016-10-03 13:38:05
【问题描述】:
我们正在使用一个drools api。需要在 Test.log 中添加时间戳。下面是代码。
public static KStatefulSessionWrapper getNewStatefulKnowledgeSessionWrapper() throws Exception {
KStatefulSessionWrapper ksessionWrapper = null;
try {
ksessionWrapper = new KStatefulSessionWrapper();
StatefulKnowledgeSession ksession = getKagent().getKnowledgeBase().newStatefulKnowledgeSession();
ksessionWrapper.setStatefulKnowledgeSession(ksession);
ksessionWrapper.setLogger(getKnowledgeRuntimeLoggerForSession(ksession));
} catch (Exception e) {
logger.error(" StatefuleKnowledgeSesion can not be created "
+ e.getMessage());
e.printStackTrace();
throw e;
}
System.out.println(" Session is created..");
return ksessionWrapper;
}
public static KnowledgeRuntimeLogger getKnowledgeRuntimeLoggerForSession(
StatefulKnowledgeSession ksession) throws Exception {
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "Test");
return logger;
}
通过在 java 文件中设置全局变量尝试。
ksession.setGlobal("logger", logger);
logger.info("Test"); // In drl file
测试打印在使用 log4j 配置的 server.log 中。
Test.log 中正在生成以下日志
<org.drools.audit.event.ActivationLogEvent>
<type></type>
<activationId></activationId>
<rule>rule number</rule>
<declarations></declarations>
所需的输出如下所示
2016-10-03 13:26:44,533 GMT-00:00 <org.drools.audit.event.ActivationLogEvent>
<type></type>
<activationId></activationId>
<rule>rule number</rule>
<declarations></declarations>
提前致谢
【问题讨论】: