drools规则引擎打印日志logger
drools规则中打印日志
如果在drools规则引擎的规则中通过日志框架打印日志呢?简单的来做可以通过以下代码带印日信息:
System.out.println("123");
那么,如果想通过统一的日志框架来打印该如何做呢?可以使用global来进行操作。
global设置日志并打印
可以通过drools规则引擎的global功能将日志设置如rule的drl文件中,然后再在drl文件中进行使用logger进行打印。具体测试代码如下:
package com.secbro2.drools.logger;
import com.secbro2.drools.demo.BaseDemo;
import org.kie.api.runtime.KieSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author sec
* @version 1.0
* @date 2019/11/3 10:39 PM
**/
public class LoggerDemo extends BaseDemo {
private static Logger logger = LoggerFactory.getLogger(LoggerDemo.class);
public static void main(String[] args) {
KieSession kieSession = getKieSession("loggerTest");
kieSession.setGlobal("logger", logger);
kieSession.insert("abc");
int count = kieSession.fireAllRules();
logger.info("触发了" + count + "条规则!");
}
}
drl规则文件中logger的使用如下:
package com.logger
global org.slf4j.Logger logger
rule "loggerTest"
when
$s:String();
then
System.out.println("123");
logger.info("print:" + $s);
end
其他配置,在com.logger中创建名称为loggerTest.drl,代码如上。在kmodule.xml中配置kbase和ksession。
<kbase packages="com.logger" name="contains-logger">
<ksession name="loggerTest"/>
</kbase>
BaseDemo类中的代码如下:
public class BaseDemo {
protected static KieSession getKieSession(String sessionName) {
KieServices kieServices = KieServices.Factory.get();
KieContainer container = kieServices.getKieClasspathContainer();
return container.newKieSession(sessionName);
}
}
相关技术视频
QQ技术交流2群:715840230
CSDN学院:《Drools7规则引擎进阶教程》
CSDN学院:《Drools7规则引擎入门教程》
CSDN学院:《Drools7系列优惠套餐》
《Drools规则引擎基础+Workbench实战视频教程套餐》


关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接