则我们可以使用下面查询条件:
http://127.0.0.1:12301/ObjectLoggerServer/log/query?appName=ObjectLoggerDemo&objectName=CleanRoomTask&objectId=5查询到如下结果:
{ "respMsg": "SUCCESS", "respData": [ { "id": 4, "appName": "ObjectLoggerDemo", "objectName": "CleanRoomTask", "objectId": 5, "operator": "Tom", "operationName": "update", "operationAlias": "Update a Task", "extraWords": null, "comment": null, "operationTime": "2019-07-04T07:22:59.000+0000", "attributeModelList": [ { "attributeType": "NORMAL", "attributeName": "roomNumber", "attributeAlias": "roomNumber", "oldValue": "", "newValue": "702", "diffValue": null, "id": 5, "operationId": 4 }, { "attributeType": "NORMAL", "attributeName": "address", "attributeAlias": "address", "oldValue": "", "newValue": "Sunny Street", "diffValue": null, "id": 6, "operationId": 4 }, { "attributeType": "NORMAL", "attributeName": "status", "attributeAlias": "Status", "oldValue": "TODO", "newValue": "DOING", "diffValue": null, "id": 7, "operationId": 4 }, { "attributeType": "TEXT", "attributeName": "description", "attributeAlias": "Description", "oldValue": "Do something...", "newValue": "The main job is to clean the floor.", "diffValue": "Line 1<br/> -: <del> Do something... </del> <br/> +: <u> The main job is to clean the floor. </u> <br/>", "id": 8, "operationId": 4 } ] } ], "respCode": "1000"}7 对象属性过滤有些对象的属性的变动不需要进行日志记录,例如updateTime、hashCode等 。ObjectLoggerClient支持对对象的属性进行过滤,只追踪我们感兴趣的属性 。
并且,对于每个属性我们可以更改其记录到ObjectLoggerClient系统中的具体方式,例如修改命名等 。
要想启用这个功能,首先将配置中的yeecode.objectLogger.autoLogAttributes改为false 。
yeecode.objectLogger.autoLogAttributes=true然后在需要进行变化日志记录的属性上增加@LogTag注解 。凡是没有增加该注解的属性在日志记录时会被自动跳过 。
例如,注解配置如下则id字段的变动将被忽略 。
private Integer id;@LogTagprivate String taskName;@LogTag(alias = "UserId", extendedType = "userIdType")private int userId;@LogTag(alias = "Status")private String status;@LogTag(alias = "Description", builtinType = BuiltinTypeHandler.TEXT)private String description;该注解属性介绍如下:
- alias:属性别名 。默认情况下会将属性名写入 。
- builtinType:ObjectLoggerClient的内置类型,为BuiltinTypeHandler的值 。默认为BuiltinTypeHandler.NORMAL 。
- BuiltinTypeHandler.NORMAL:记录属性的新值和旧值,对比值为null
- BuiltinTypeHandler.RICHTEXT: 用户富文本对比 。记录属性值的新值和旧值,并将新旧值转化为纯文本后逐行对比差异,对比值中记录差异
- extendedType:扩展属性类型 。使用ObjcetLogger时,用户可以扩展某些字段的处理方式,此时,alias等信息均可以被用户自主覆盖 。
ObjectLoggerClient完全支持这种情况,可以让用户自主决定某些属性的日志记录方式 。要想实现这种功能,首先在需要进行扩展处理的属性上为@LogTag的extendedType属性赋予一个字符串值 。例如:
@LogTag(alias = "UserId", extendedType = "userIdType")private int userId;然后在业务系统中声明一个Bean继承BaseExtendedTypeHandler,作为自由扩展的钩子 。代码如下:
@Servicepublic class ExtendedTypeHandler implements BaseExtendedTypeHandler { @Override public BaseAttributeModel handleAttributeChange(String extendedType, String attributeName, String attributeAlias, Object oldValue, Object newValue) { // TODO }}接下来,当ObjectLoggerClient处理到该属性时,会将该属性的相关信息传入到扩展Bean的handleAttributeChange方法中,然后用户可以自行处理 。传入的四个参数解释如下:
推荐阅读
- 如何构建Google搜索自动完成功能
- 如何开淘宝网店的步骤手机 怎么用手机淘宝开店铺
- 双开门冰箱如何选购
- EC6价格能打,筹备电池资产公司,满血复活的蔚来如何加电?
- 如何穿得清凉又有型?10个搭配风格,时尚达人般的衣风你也能拥有
- 给花换盆拿不出来怎么办,花盆不砸如何换盆
- 养生之道 跟庄子学习如何养生保健
- 武夷山正山小种红茶功效如何
- 淘宝商家退店流程 淘宝网店如何退店
- 如何选择适合自己的婚礼主持人