并不是把项目运行日志打印的文件或者控制台,而是需要把 谁,什么时候,操作了什么.操作的内容是什么,显示出来给使用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 已经是提交用于更新的.
在此也请教一下有没有其他更好的方法实现这种日志记录呢?谢谢!