zoukankan      html  css  js  c++  java
  • 如何记录系统(oa)的操作日志 ?

      并不是把项目运行日志打印的文件或者控制台,而是需要把 谁,什么时候,操作了什么.操作的内容是什么,显示出来给使用oa的人员查阅.

      例如:更新了一个客户的名字.就需要记录为 谁,什么时候,修改了 客户,客户原名字,客户的新名字 记录下来.

      设计思路有:

      1.在action 层使用spring aop.

      好处是一个action 层的方法,即使包含了多个service 层的方法(操作),也会被看着是一个操作来记录.

      问题是:action 层从jsp 传过来的参数是HttpServeletRequest 类型,根本不知道传过来的参数 到底是什么.

      2.在service 层使用spring aop.

      好处是可以获取到具体的参数.

      问题是:假如多个多个service 层方法组成一个action 层的方法,日志将会记录多个操作,过于复杂,普通操作人员看不懂.

      3.直接在action层手写.不使用spring aop

      将日志记录到数据库.好处是可以将日志写的非常具体.

      问题是: 每个方法都写,太累!

      

      最后使用方法2.

      因为只对增加,删除,修改做日志,这样action 层一个方法都只有一个需要事务的方法(增删改),所以是一对一,没什么问题,可以写的比较清晰.

      实现的技术有 :在实体类添加自定义注解+spring aop +实体类添加getNameForLog() 方法.

      getNameForLog() 方法会返回一个对象唯一的标识,如名字,如Id.通过这个方法可以在aop 中获取方法的参数对象的唯一名字.这个名字就是日志中的"操作的内容是什么"的内容,可以让一般人看的懂是操作了什么对象.

      有一个问题是:不知道在aop 中获取参数更新前的数据.因为update(obj) 中的obj 已经是提交用于更新的.

      在此也请教一下有没有其他更好的方法实现这种日志记录呢?谢谢!

      

  • 相关阅读:
    UICollectionView
    UIDynamicPPT
    05-UIDynamic
    键盘处理return key-工具条
    源代码管理工具 git
    源代码管理工具
    核心动画09-CATransition转场动画
    核心动画06-时钟(了解)
    Intersect,Minus,union all 和union的区别
    freemarker大于,小于 gt,lt 的用法
  • 原文地址:https://www.cnblogs.com/predisw/p/4739681.html
Copyright © 2011-2022 走看看