项目jdk7.0 架构是s1s3h3 二次开发
日志的需求是这样的 记录每个用户操作ip啦、用户名啦、访问url啦。执行方法啦、执行入参啦、返回值啦、是否执行成功啦、抛出异常记录啦、对象变更记录(如:对象person属性name变更前a变更后b)。
分解需求就是一个用户操作日志记录 和一个对象变更前后记录(相同的类及属性不同值记录)
刚听到需求觉得很简单,一开始想的方案是用spring aop + 自定义注解着手解决用户操作日志
对象变更开始想的是 object2json 然后jsonObject比对key的值 如果实在不行就反射
于是开始找资料,对象变更的发现github上有2个不错的对象比较项目
javers和
java object diff
demo测试后发现不错,于是开始整合测试,发现我们的实体是复杂多继承循环引用而且还是打包class不能改源码。
比如人员类 里面还有人员 相当于循环引用了
如
class Person{
String name;
int age;
Person father;
}
fastjson object转json都不行了加了DisableCircularReferenceDetect没办法加忽略注解而且整个项目中那么多的实体也不知道哪些是有循环引用的,后来放弃了,弄成反射的,可是实体里的一些实体没办法判断属性变更,多层级的问题
后来写好一版拿给经理看说不让拿spring aop做。。。。。让我去github上找找其他日志框架。。。。无语。。。。
我的问题是
大家的项目系统中关于用户操作日志记录的解决方案 这块是拦截器还是aop还是其他的解决方案,
另外在
复杂对象的变更比对上有解决方案吗?
或者有其他更好的建议吗?
ps:现在是没有解决方案的办法了,浪费了3天,stackoverflow英文很头疼 搜索关键字都很少 operation log? audit log?
github上也没有这块操作日志的框架项目,
先谢谢各位了!~