此开源项目分为四块,没块功能是:client集成业务系统,server保存日志到数据库,react和demo。
使用方法
1.搭建server:
下载,配置数据库,启动jar。访问http://127.0.0.1:12301/ObjectLoggerServer/ 验证搭建效果。
命令:java -jar ObjectLoggerServer-3.1.1.jar --spring.datasource.driver-class-name=com.mysql.jdbc.Driver --spring.datasource.url=jdbc:mysql://121.****/tempbase --spring.datasource.username=root --spring.datasource.password=**
2.接入业务系统:
引入最新版本pom
配置扫描注解,@ComponentScan(basePackages={"启动类包路径","com.github.yeecode.objectlogger"}) 。
配置application.properties
yeecode.objectLogger.serverAddress=http://127.0.0.1:12301yeecode.objectLogger.businessAppName=admin-serviceyeecode.objectLogger.autoLogAttributes=truePlain Text
在需要记录日志的类下面引入
@Autowiredprivate LogClient logClient;Plain Text
编写写入操作:
属性变化放入List<BaseAttributeModel>后调用logAttributes方法写入
写入实体变花:
先用logClient.deepCopy(task); 保留原来的实体。然后logClient.logObject()将新老实体写入
3.查询
访问http://127.0.0.1:12301/ObjectLoggerServer/log/query 查询所有日志。也可以根据appName服务名称和objectName实体名称和objectId实体id查找。
只有操作没有属性改变的时候
有操作且有属性改变的时候
因为我已经执行过几次写入操作和写入实体变化操作,所以能查询到数据。此时的server数据库是这样的
4.拦截处理
要想过滤属性
需要进行变化日志记录的属性上增加@LogTag注解。凡是没有增加该注解的属性在日志记录时会被自动跳过。
要想属性扩展
声明一个Bean继承BaseExtendedTypeHandler,作为自由扩展的钩子。重写handleAttributeChange方法,可以实现类似于 将id转化为名称等功能
使用规则
对业务数据库进行操作之后才应该有日志记录。所以开发者应注意,在操作业务数据库代码之后才能写入server数据库进行日志记录。
分析适用性
优点:
服务端以jar写好,不需要关心内部实现。可以实现多数据源,以appName以区分。可以对比实体的变化,引入依赖即可使用写入和查询方法。
缺点:服务端没有插件,需要单独开一个服务运行sql文件生成数据库表,不能生成在一个数据库中。需要构造新老实体传写入方法,也就是不手动写入不记录。没有前端需要开发。