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实战视频教程套餐》
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接