wasd1151的gravatar头像
wasd1151 2018-01-12 17:44:21

如何实现记录用户操作到数据库的方法啊?

我想实现记录用户登录后的具体操作(增删改查,以及对哪条数据操作的),然后给这些操作记录存到数据库里去,求大神们帮帮忙

所有回答列表(10)
gypgyp的gravatar头像
gypgyp  LV10 2018年1月13日

1、分析mysql binlog 的时候,使用了阿里开源的 canal(github上面可以搜到)
2、通过canal我们很方便的获取到了数据库中所有表在同一个事务下的操作记录(修改前、修改后相关的数据),可以根据业务需要将这些操作记录再次保存到数据库中方便查看。
3、在完成第二步的时候,我们只是知道数据库的操作记录,还没有得到是谁引起数据变化的。这个也很简单的,操作数据库前,新建一个用户记录表,每次涉及到修改数据库的时候,在同一个事务中把用户相关信息插入到用户记录表中。因为在同一个事务中的,我们在第二步的的时候就可以得到是谁操作了这个这个记录。

刘大壮要强壮的gravatar头像
刘大壮要强壮  LV5 2018年1月13日

Druid,我只知道这么多.........

已注销用户的gravatar头像
已注销用户  LV34 2018年1月14日

对应的curd 的操作方法里面都加上 记录的log,然后把这些操作保存到你的xxx_log表中即可。

kaka的gravatar头像
kaka  LV19 2018年1月15日

spring的aop就可以帮你实现啊,给所有以save*,delete*,update*的方法加上切面,每次调用这些方法后记录下就可以了

Tonfay的gravatar头像
Tonfay  LV26 2018年1月15日

主要看你想把压力放在哪个层面上,

1.以来于db的话,可以考虑触发器,每张表增删改的操作都往一张记录表中增加即可。

2.aop service层 ,对增删改做切面,去记录。

3.通过日志的方式,利用nginx或apach等服务器容器 做日志 ,增删改的路径都往文件中写日志,再按期分析用户的操作。(一般用户的实时操作不建议实时获取,一般考虑进行定时任务分析等)

4.dao层手动打日志,并写文日志文件,分析过程与3同理。

无聊居士的gravatar头像
无聊居士  LV5 2018年1月16日

这是关于数据库操作的你先掌握数据库操作语句比如insert,delete,slelct并找到在相应的java语句即可

BovenRaye的gravatar头像
BovenRaye  LV10 2018年1月17日

可以用数据库的触发器或者监听

江山小画的gravatar头像
江山小画  LV1 2018年2月6日

你这个可能是审计方面的需求,这种需求一般在项目开始的时候要考虑进去的,所有的db的操作要有一个服务层,里面的逻辑类似

before

db operation

after

你的操作系统的before里面

简单记录就是这样,如果有事务操作,可能就要想的多一点 ,比如before失败了怎么办,before成功,db失败了怎么办

zzuedu的gravatar头像
zzuedu 2018年2月28日

日志处理用log4j。

log4j配置配置直接导进数据库里,多方便。

等一只喵喵的gravatar头像
等一只喵喵  LV1 2018年3月7日

很简单,如果是Mybatis,你写个mybatis的插件,在插件里面拦截SQL语句,想干嘛干嘛。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友