设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2019-07-04 11:58 所属栏目:117 来源:程序员进阶架构师
导读:例如,注解配置如下则id字段的变动将被忽略。 privateIntegerid; @LogTag(name=TaskName) privateStringtaskName; @LogTag(name=UserId,extendedType=userIdType) privateintuserId; @LogTag(name=Description,buil

例如,注解配置如下则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; 

然后在业务系统中声明一个Bean继承BaseExtendedTypeHandler,作为自由扩展的钩子。代码如下:

  1. @Service 
  2. public class ExtendedTypeHandler implements BaseExtendedTypeHandler { 
  3.  @Override 
  4.  public BaseActionItemModel handleAttributeChange(String attributeName, String logTagName, Object oldValue, Object newValue) { 
  5.  return null; 
  6.  } 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读