加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

架构师必看!操作日志系统搭建秘技

发布时间:2019-07-04 13:53:11 所属栏目:Windows 来源:程序员进阶架构师
导读:副标题#e# 在Java开发中,我们经常会遇到一个棘手的问题:记录用户的操作行为。 某些操作是相对简单的,我们可以逐条记录。但是某些操作行为却很难记录,例如编辑操作。在某一次操作中,用户可能编辑了对象A的几个属性,而下一次操作中用户可能编辑了对象B

例如,注解配置如下则id字段的变动将被忽略。

  1. private Integer id; 
  2. @LogTag(name = "TaskName") 
  3. private String taskName; 
  4. @LogTag(name = "UserId", extendedType = "userIdType") 
  5. private int userId; 
  6. @LogTag(name = "Description", builtinType = BuiltinTypeHandler.TEXT) 
  7. private String description; 

该注解属性介绍如下:

  • name:必填,对应写入日志后的attributeName值。
  • builtinType:ObjectLogger的内置类型,为BuiltinTypeHandler的值。默认为BuiltinTypeHandler.NORMAL。
  • BuiltinTypeHandler.NORMAL:记录属性的新值和旧值,对比值为null
  • BuiltinTypeHandler.TEXT: 用户富文本对比。记录属性值的新值和旧值,并将新旧值转化为纯文本后逐行对比差异,对比值中记录差异
  • extendedType:扩展属性类型。使用ObjcetLogger时,用户可以扩展某些字段的处理方式。

7 属性处理扩展

很多情况下,用户希望能够自主决定某些对象属性的处理方式。例如,对于例子中Task对象的userId属性,用户可能想将其转化为姓名后存入日志系统,从而使得日志系统与userId完全解耦。

ObjectLogger完全支持这种情况,可以让用户自主决定某些属性的日志记录方式。要想实现这种功能,首先在需要进行扩展处理的属性上为@LogTag的extendedType属性赋予一个字符串值。例如:

  1. @LogTag(name = "UserId", extendedType = "userIdType") 
  2.  private int userId; 

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读