首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

系统运维(2):AOP+反射实现 普通操作日志设计

2013-10-08 
系统运维(二):AOP+反射实现 普通操作日志设计普通操作日志和业务操作日志在开始做之前,必须把两个日志分清

系统运维(二):AOP+反射实现 普通操作日志设计
普通操作日志和业务操作日志

在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?

在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。

打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:

生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝

这样一个下单操作就包含了4部分,可以把这4部分看成是4张表,分别对这4张表进行对应的操作,就实现了业务。

因为不同项目的业务不尽相同,所以它无法做成通用模块,所以下面讲的是普通操作日志。

 

首先,哪些地方需要记录操作日志?执行insert、update、delete这3个操作的时候,就需要进行日志,而日志执行的先后顺序如下

insert

在insert后执行

update

在update前后都要执行,操作前获取操作前数据,操作后获取操作后数据

delete

在delete前执行

 

实现的效果展示如下

系统运维(2):AOP+反射实现 普通操作日志设计系统运维(2):AOP+反射实现 普通操作日志设计


根据界面可以抽象成2张表,一张主表一张从表,主表记录操作表及操作人等信息,从表记录操作的表字段信息。

 

下面说说实现日志的管理可以使用过滤器,或者是Spring的拦截器进行日志的处理。

    他们的好处,就是配一下就能够切入到系统当中。

如果是用过滤器,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个方法的调用,然后进行日志记录。使用过滤器的好处是可以自己选择性的对某一些方法进行过滤,记录日志。

另外一种就是使用Spring的AOP了,实现简单,只要配置一下配置文件就可以了。但这种方式会拦截下所有的对action或者dao的每个操作,所以效率比较低。

 

下面我说说使用AOP实现方式在spring中配置。配置在指定包下的指定方法执行前或者后,执行指定类

ModelClassHelper类,主要实现通过反射Object,得到对应的具体类信息

这些打印的信息,在实际系统中应该写入数据库。这里有个小问题,通过aop可以得到实体类以及数据信息,这些信息都是通过映射得到的,跟具体业务无关,所以他们对应的名字(表名、字段名)怎么获得,我现在想的是把表的信息在配置文件中保留一份。

 

小结

我们容易着重系统的功能性实现,却忽视日志的作用。日志有系统日志、业务日志、工作日志等。

系统日志可供用户查询指定时间段内对系统的操作记录,也就是上面所说的普通操作日志,正如上面实现那样,跟具体业务无关,像个切片写入系统中,需要时配置下就好了。

业务操作日志则是跟系统的具体业务有关,是一系列的普通操作日志的集合。

工作日志在今目标中可以看到,用来跟踪业务的进展,方便管理者更好的把握工作进展情况,以便及时加以控制,有效调配资源。在今目标里,管理者可以批量查看一个部门或者项目团队成员的日志,跟踪重要事件,及时指导。工作日志还有一个业绩证明的作用,员工的工作量、工作效果在这里得到体现。工作日志,对管理很有帮助的工具。

热点排行