Drools给日志打标签
一、定义日志模型
public class Logger {
// 日志编号
private String id; // 目标IP
private String targetIp; // 目标端口
private String targetPort; // 源IP
private String sourceIp; // 源端口
private String sourcePort; // 创建时间
private long createTime; // 资产IP
private String assetsId; public List<String> getTags() {
return tags;
} public void setTags(List<String> tags) {
this.tags = tags;
} private List<String> tags = new ArrayList<String>(); public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getTargetIp() {
return targetIp;
} public void setTargetIp(String targetIp) {
this.targetIp = targetIp;
} public String getTargetPort() {
return targetPort;
} public void setTargetPort(String targetPort) {
this.targetPort = targetPort;
} public String getSourceIp() {
return sourceIp;
} public void setSourceIp(String sourceIp) {
this.sourceIp = sourceIp;
} public String getSourcePort() {
return sourcePort;
} public void setSourcePort(String sourcePort) {
this.sourcePort = sourcePort;
} public long getCreateTime() {
return createTime;
} public void setCreateTime(long createTime) {
this.createTime = createTime;
} public String getAssetsId() {
return assetsId;
} public void setAssetsId(String assetsId) {
this.assetsId = assetsId;
}
}
二、编写规则算法文件
import com.xxx.drools.logger.Logger; rule "logger1"
when
$logger : Logger(targetIp=="192.168.26.108")
then
$logger.getTags().add("测试机");
System.out.println("Logger:"+$logger.getTargetIp());
end
三、编写drools加载代码
import java.util.Collection; import org.drools.core.event.DebugAgendaEventListener;
import org.drools.core.event.DebugRuleRuntimeEventListener;
import org.kie.api.KieServices;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.internal.KnowledgeBase;
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.definition.KnowledgePackage;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.StatefulKnowledgeSession; public class LoggerTag {
public void runRules(String[] rules, Object[] facts) throws Exception { KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder(); for (int i = 0; i < rules.length; i++) {
String ruleFile = rules[i];
System.out.println("Loading file: " + ruleFile);
kbuilder.add(ResourceFactory.newClassPathResource(ruleFile,
LoggerTag.class), ResourceType.DRL);
} Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages(); kbase.addKnowledgePackages(pkgs); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); for (int i = 0; i < facts.length; i++) {
Object fact = facts[i];
System.out.println("Inserting fact: " + fact);
ksession.insert(fact);
} ksession.fireAllRules();
} }
四、测试代码
public class Example1 {
public static void main(String[] args) throws Exception {
List<Logger> loggerList = LoggerData.getLogger();
new LoggerTag().runRules(new String[] { "logger1.drl" },
loggerList.toArray());
if (loggerList != null && loggerList.size() > 0) {
for (Logger logger : loggerList) {
for (String tag : logger.getTags()) {
System.out.println("tag:"+tag);
}
}
}
}
}
Drools给日志打标签的更多相关文章
- Drools文档(八) 规则语言参考
规则语言参考 概述 Drools有一个"本地"的规则语言.这种格式在标点符号上非常轻,并且通过"扩展器"支持自然语言和领域特定的语言,使语言能够变形到您的问题领 ...
- Drools 7.4.1.Final参考手册(八) 规则语言参考
规则语言参考 概述 Drools有一个“本地”的规则语言.这种格式在标点符号上非常轻,并且通过“扩展器”支持自然语言和领域特定的语言,使语言能够变形到您的问题领域.本章主要与本机规则格式一致.用于表示 ...
- 【Android】ADB常用指令与logcat日志(转)
ADB命令简介 ADB是一个功能强大的命令行工具.通过它可以直接和模拟器或真机进行交互.它是一个具有客户端和服务器端的程序. 它主要由三个部分组成: 客户端,它运行在你的开发机上,你可以通过执行adb ...
- 【Android 应用开发】Android开发 使用 adb logcat 显示 Android 日志
作者 : 万境绝尘 转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 ...
- Linux下rsyslog日志收集服务环境部署记录
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- 看数据库的文件大小 MySQL Binlog日志的生成和清理规则
小结: 1.避免并行大大事务对磁盘.内存的消耗: MySQL数据文件导致实例空间满的解决办法_空间/内存_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/kno ...
- 初探日志框架Logback
一. 背景 最近因为学习项目时需要使用logback日志框架来打印日志, 使用过程中碰到很多的疑惑, 而且需要在控制台打印mybatis执行的sql语句, 于是决定沉下心来 研究一下logback的使 ...
- Android日志监听工具logcat命令详解(转)
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试 ...
随机推荐
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- [css3]圆盘旋转动画
效果:打开只能看到logo,鼠标放上去,圆盘渐显放大旋转展示出来 知识点: [html+css] 1.logo水平垂直居中于圆盘内,用到的样式 position: absolute; left: 0; ...
- iptables基本规则
注意:iptables只能被拥有超级权限的用户设置. 重启 清空 iptables 规则:在终端输入: iptables -F iptables -X iptables -t nat -F i ...
- JavaScript Array对象 知识点总结
1 isArray方法 该方法是Array对象的静态方法,用来判断一个值是否为数组,它可以弥补typeof运算符的不足. 用法是Array.isArray(array实例) 通用的判断对象数据类型的方 ...
- WebStorm phpStorm 注册码
WebStorm User or company Name: EMBRACE ===== LICENSE KEY===== 24718-12042010 00001h6wzKLpfo3gmjJ8xoT ...
- this面试题
// 考题1 /*function Fn() { console.log(this);//window } Fn(); new Fn();//Fn实例 Fn.apply(Fn); //将this指向F ...
- Hadoop 如何查看是否32位
1.从哪些地方可以识别hadoop是32位还是64位?2.hadoop本地库在什么位置? hadoop在安装的时候,我们需要知道hadoop版本是32位还是64位. hadoop官网本来提供的都是32 ...
- BZOJ 1833 count 数字计数
sb数位dp. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...
- TCP 状态机
TCP 状态机 TCP 协议的操作可以使用一个具有 11 种状态的有限状态机( Finite State Machine )来表示,图 3-12 描述了 TCP 的有限状态机,图中的圆角矩形表示状态, ...
- Caffe proto閱讀
--------------------------------------------------------------------------------- 1.Data Layer sourc ...