总结关于操作日志记录的实现

 

目 录
 
在数据库中建立操作记录(方式一) 
 
 

这种方式主要是在每个方法中设置静态常量String 相当于对方法的注释,并建立数据库日志表,用户登陆ERP 系统并进行操作时,读取用户登录信息Session ,同方法中的静态常量,和时间一并写入数据库的日志表中,由此来达到建立ERP 系统操作日志的目的
 
缺点:此方法较为比较麻烦需要在每个方法中定义静态常量,并且影响ERP 系统的工作效率,当一个操作执行多次时ERP 多次读取用户信息Sessions ,为TOMCAT 增加较高的负荷,但思路简单,代码量大,实现方便。也可以考虑将信息写入到XML 或者TXT 文档中去。
 
建立操作记录(方法二)
 
SSH 环境下,将数据库操作事务交给Spring 管理
1 、尽量使用注解声明事务;
 
2 、写一个类扫描使用了事务的方法。根据楼主提出的技术需求分析,只有写入动作才需要记录,同样数据库只有写入才需要事务,读取不需要,所以在不需要事务的方法上面标注@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true) ,这样可以精确过滤出需要记录日志的方法;
 
3 、利用AOP 编程实现日志记录功能。
时间:AOP 切入点处取系统时间
操作员和IP :控制层在session 作用域里取得用户对象和request IP 地址传给切入点
 
操作:可以在操作数据库的DAO 组件上( 方法) 用自定义注解标上,例如:@Operation=INSERT|DELETE|UPDATE... 只要读取到这个配置就知道操作类型。当然也可以利用Hibernate 来得知,得要看Hibernate 的源代码。
 
结果:事务成功即成功,事务回滚即失败。
 
业务数据ID :这个有两种解决方法,一种笨拙的办法是所有的数据模型层的实体对象都抽取ID 到父类;二是实体映射的配置方法采用注解方式,这样可以写一个类扫描出实体的ID 字段和类型,自然能记录之。
 
粒度问题:首先只要应用到事务的地方都可以记录之,批量操作数据行实际是循环调用DAO 组件,也就实现了批量记录。当然,如果送批量SQL 语句到数据库,由DBMS 来做那就无奈了。
 
这种方案设计可以一次编写,终身使用,不受项目的模块增减影响。代码量小,维护容易。
 
使用LOG4J,通过配置LOG4J来获取业务日志(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值