0
私たちはdrools APIを使用しています。 Test.logにタイムスタンプを追加する必要があります。以下はコードです。droolを使用して生成されるログファイルにタイムスタンプを追加する必要があります
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
testはlog4jで構成されたserver.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>
おかげで以下のようにTest.logに生成されている