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 已经是提交用于更新的.

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

      

  • 相关阅读:
    Spring boot核心注解
    Spring-boot配置文件
    JAVA操作Excel
    操作系统之基础
    Batch Normalization
    解决ios微信页面回退不刷新的问题
    textarea高度自适应,随着内容增加高度增加
    旋转卡 可以用做登录注册
    一个页面tab标签切换,都有scroll事件的解决办法
    input type="radio" 赋值问题
  • 原文地址:https://www.cnblogs.com/predisw/p/4739681.html
Copyright © 2011-2022 走看看