java 审计日志_审计日志的实现
切面的entity用来记录审计日志的内容.
切面类用来实现记录升级日志的操作.
这里还有一些辅助的类,比如枚举类,枚举出了所有的模块及名称.
这些基本工作做好了以后,在需要使用审计日志的模块中,添加类似下面这样一段语句就可以了。以导入为例,我要为导入添加审计日志。
先实例化一个审计日志AuditLog,然后执行相应的方法就可以了。我这里调用的是导入的import2DB,导入方法。由此可以推断:我在审计日志的切面类一定是定义了一个拦截import2DB方法的切入点。这里提一下。我确实定义了类似这样的拦截器,但定义的不是import2DB切入点。而是import*切入点。顾名思义,相信你能明白这是什么意思。
注意:这里拦截的所有的方法都是service层的方法。因为拦截后要传递给切面类一个叫auditLog的参数,所以这些参数都是在controller中构造好了,传递过去的。
============================================================================
主要实现如下:
1.定义一个AuditLog实体类.
============================================================================
2. 定义了一个切面类AuditLogAspect.java,仔细看看这个方法具体是实现过程。
============================================================================
下面说明一下具体的含义:
以下这些是切入点.这里定义了要对哪些文件夹下的哪些方法执行切入操作.这里对哪些方法做了监控呢?新增,修改,权限,重置密码,修改密码,置为无效,置为有效,删除,导入,导出,回收站恢复数据,删除数据。对这些方法都做进行了审计日志操作。注意一下这里的操作。这里不是调用add方法,而是add*,意思是以add开头的所有方法都会被拦截。
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..add*(..))")
public void add(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..modify*(..))")
public void modify(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..authorization*(..))")
public void authorization(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..resetPassword*(..))")
public void resetPassword(){}
//@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..modifyPwd*(..))")
//public void modifyPwd(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..enable*(..))")
public void enable(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..disable*(..))")
public void disable(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..delete*(..))")
public void delete(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..export*(..))")
public void exportFile(){}
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..import*(..))")
public void importFile() {}
/**回收站恢复数据*/
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..recovery*(..))")
public void recovery() {}
/**真实删除数据*/
@Pointcut("execution(public * com.baihui.hxtd.soa.*.service..realDelete*(..))")
public void realDelete() {}
下面来看看这个切点。这个切点的意思是拦截括号里的所有的方法,对他们进行监控。
@Pointcut("add() || modify() || authorization() || resetPassword() || delete() ||exportFile() || importFile() || recovery() || realDelete()")
public void anyOperation(){}
下面就是具体的通知的方法了。注释里也标明了方法的作用.
/**
* @AfterReturning("anyOperation() && args(.., auditLog)")
* 拦截anyOperation()指定的所有方法,并且这些方法的最后一个参数是auditLog
*/
@AfterReturning("anyOperation() && args(.., auditLog)")
public void doAfterReturnAudit(JoinPoint jp, AuditLog auditLog) {
logger.debug("==========进入doAfterReturnAudit=========== \n");
//自动设置记录主键编号
Object[] args = jp.getArgs();
Object arg = args[0];
if (arg != null && arg instanceof Idable) {
Idable idable = (Idable) arg;
if (idable.getId() != null) {
auditLog.setRecordId(idable.getId());
auditLog.setCreatedTime(new Date());
}
}
auditLogService.save(auditLog);
logger.debug("切入点方法doAfterReturnAudit执行完了 \n");
}
========================================================================
注: 我们在hxtd这个项目中,审计日志拦截的都是service层的add(),modify(),delete(),import(),export()等方法,对这几个方法的要求是,其最后一个参数必须是AuditLog,或者是AuditLog[].传递过来的是对象,这样直接在切面类中对该对象进行保存就可以了.
看看是如何拦截service的.因为service中的最后一个参数是从controller层传递过来的,所以,在controller层已经写好了AuditLog对象,传递到service层.
以线索为例.在修改一条数据的时候添加审计日志
/************创建一个auditLog对象,并调用构造方法,传递参数进去*****************************/
AuditLog
auditLog = new AuditLog(EnumModule.MARKETACTIVITY.getModuleName(),
activity.getId(),
activity.getName(), EnumOperationType.MODIFY.getOperationType(), user);
leadService.add(activity,
user, auditLog);
这里解释一下构造auditLog对象.
AuditLog auditLog =
new AuditLog(EnumModule.MARKETACTIVITY.getModuleName(),
activity.getId(),
activity.getName(), EnumOperationType.MODIFY.getOperationType(), user);
这个构造方法有以下几个参数,看看这个构造方法是怎么写的.
public
AuditLog(String moduleName, Long recordId, String recordName, Integer type,
User creator) {
super();
this.moduleName
= moduleName;
this.recordId
= recordId;
this.recordName
= recordName;
this.type
= type;
this.creator
= creator;
}
============================================================================
很明显,这几个参数分别是模块名称,记录id,记录名称,操作类型,操作者
这几个参数中有两个是从枚举中取得的.具体从枚举中取得好处和普通常量的区别,可以网上查查.
============================================================================
模块名称枚举类:
============================================================================
操作类型枚举:
============================================================================
下面看看我们要切入的service的写法.
在service层,没有做什么操作,就是多了一个参数.
这里是对导入记录审计日志.其他模块的凡是涉及到增删改的操作都可以实现审计日志功能,配置方法和上面也都一样
java 审计日志_审计日志的实现相关推荐
- python日志审计系统_综合日志审计系统
原标题:综合日志审计系统 产品简介 中安威士综合日志审计系统(简称VS-LS),该系统 能够通过主被动结合的手段,实时不间断地采集用户网络中各种不同厂商的安全设备.网络设备.主机.操作系统.以及各种应 ...
- acl审计软件_审计软件有哪些-审计软件的总结分析
国外审计软件的总结分析 1. 1 国外常见审计软件的分类 根据 J ackson 的调查审计人员常用的各类审计软件总结如下 : (1) 数据采集软件--数据采集软件是指在进行计算机辅助审计时用来采集被 ...
- es审计日志_审计系统的一剂良方——事件溯源
大多数系统在数据库存的都是系统的状态数据,比如一个用户表可能会存用户的姓名.头像.个性签名等信息.如果只存状态数据的传统模式会有什么问题呢? 问题起源 假设你公司做了一个系统,并正式上线了.经过一周的 ...
- mysql 归档日志_归档日志管理
数据环境: SQL select * from v$version; BANNER ---------------------------------------------------------- ...
- python日志审计系统_日志审计系统
概述 随着信息化进程的深入和互联网的迅速发展,人们的工作.学习和生活方式正在发生巨大变化,效率大为提高,信息资源得到最大程度的共享.紧随信息化发展而来的网络安全问题日渐凸出,如果不能很好地解决这个问题 ...
- snmp获取交换机日志_日志审计系统和数据库审计系统的区别
今天就易混淆的日志审计系统与数据库审计系统进行辨析.从日志审计系统和数据库审计系统的技术特点和原理来切入,来分析日志审计系统与数据库审计系统的异同. 01.日志审计系统 系统日志 系统日志是记录系统中 ...
- 通过syslog协议发送日志信息到日志审计系统(配置logback-spring.xml方式)
目录 业务背景 实现方式 验证 业务背景 通过syslog协议将业务系统的日志信息发送到日志审计系统,日志审计系统将对日志进行存储.监控和分析,保障业务系统资源安全. 实现方式 配置logback-s ...
- 微服务架构 — 服务治理 — 服务监控与告警、服务日志与审计
目录 文章目录 目录 日志与审计 监控与告警 配置中心 文档中心 日志与审计 日志分析组件应该在微服务兴起之前就被广泛使用了.即使单体应用架构,当访问数变大.或服务器规模增多时,日志文件的大小会膨胀到 ...
- GBase 8a 的日志管理1-备份恢复日志、重分布日志、审计日志
备份恢复日志 备份恢复日志类型信息一览表: 日志名称 日志路径 日志说明 备份调度日志 $GLUSTER_BASE/log/gcluster/gcrcma n.log 集群内在每组的第一个节点上 ...
- 常见安全设备总结(IDS、IPS、上网行为管理、网闸、漏扫、日志审计、数据库审计、堡垒机等)
常见安全设备总结(IDS.IPS.上网行为管理.网闸.漏扫.日志审计.数据库审计.堡垒机等) 一.网络结构 二.防火墙.IPS 1.防火墙 2.IPS 三.上网行为管理.网闸 1.上网行为管理 2.网 ...
最新文章
- Android AlarmManager 使用指南
- windbg+VM 设置内核调试环境(双机调试)
- 圈子 | 大数据分析汽车O2O的机会
- boost::replace_copy相关的测试程序
- Apache Flink Meetup,1.13 新版本发布 x 互娱场景实践分享的开发者盛筵!
- java学习(38):数组排序(直接排序)
- 安装华为鸿蒙,魅族选择与鸿蒙合作,华为这下要成了?
- R-CNN学习笔记5:Faster R-CNN
- unix环境高级编程(第三版)-读书笔记1
- 超级好用的一个php上传图片类(随机名_缩略图_加水印),php教程_超级好用的一个php上传图片类(随机名,缩略图,加水印)...
- 基于java的百货中心供应链管理系统
- goland 注释模板_【精品】金工实习心得体会模板合集5篇
- Win11修改用户名(超详细图文)
- Level Shift
- 斐讯M1,nodered打包显示在homekit
- 初秋进补 粥汤大对决
- HEXOFontmin
- 两台电脑如何直接用一根网线传数据(终极篇)
- 论“正义”——什么是正义?
- JavaScript练习--[使用js语言实现网页切换图片的效果]
热门文章
- 同构数怎么判断_判断同构数C语言
- 英特尔驱动程序下载_如何修复英特尔计算机上的“此计算机未验证正在安装的驱动程序”...
- ArcGIS导出shape地图边界点数据
- python win32 替换效率低_python win32.api pyhook ShellExecute 编写自用windows系统快捷键工具,提升工作效率,提升编码效率...
- 关于固态硬盘开卡转接卡的研究,用SM2258XT测试智微、祥硕、威盛
- python 狄里克雷平滑_狄里克雷平滑(Dirichlet)、線性插值平滑(Linear Interpolated)、拉普拉斯平滑(Laplacian)...
- 计算机算法专业英语,计算机算法相关术语的英语词汇
- 基于51单片机的酒精检测仪设计
- 键盘常用ASCII码对照表
- [b][size=5]沸点文库下载器V2.5.0.0——百度文库豆丁道客巴巴实时浏览下载热门排行文档推荐[/size][/b] [b]沸点文库下载器 - 沸点文档下载 软件信息 软件版本:V2.5.