springboot 记录用户操作日志到数据库最佳实践?

2022-04-26 00:32:25 +08:00
 anxn

如题,用 审计 这个词应该比较准确些,主要需求就是记录管理后台的用户对数据库的增删改和上传文件行为进行记录,方便后面出现问题可以定位到具体用户的具体行为

以前没写过这方面的代码,目前查资料发现 springboot aop 应该可以实现,还有就是自己想的可以在表里面加上用户信息的字段,增删改时就记录这些字段

想问下各位 v 友在实际工作中是如何解决此类问题的? 最佳实践是什么?

4927 次点击
所在节点    Java
15 条回复
chendy
2022-04-26 00:50:42 +08:00
就切面就行,或者做一套事件监听机制(麻烦一些,但是泛用性更强,但是也没啥必要)
至于具体切在什么地方,记录那些内容就按业务需求决定
liangkang1436
2022-04-26 01:10:22 +08:00
log4j 就是专门干这个的
liangkang1436
2022-04-26 01:10:44 +08:00
@liangkang1436 jdbcappender 可以直接写入数据库
dlmy
2022-04-26 01:36:40 +08:00
可以参考一下美团技术团队的做法,谷歌上搜 "如何优雅地记录操作日志?"。
我发不了网站的链接,很尴尬 。。。
wxyrrcj
2022-04-26 08:01:19 +08:00
看下若依 eladmin 啥的开源项目 里面都有这个功能的实现。
aragakiyuii
2022-04-26 08:14:09 +08:00
rehoni
2022-04-26 08:53:21 +08:00
切面,注解,EL 表达式,接口 Result 体,大概就这么几个元素组成思路
xuanbg
2022-04-26 08:54:58 +08:00
如果仅仅是记录用户操作和相关数据就很简单,把接口 url 和入参打在日志里面就行了。我都是在网关统一打接口调用日志,监控入参、响应时间,有些接口还监控返回数据。如果要进一步记录 xxx->yyy 的,就只能在接口实现代码里面去调用写业务日志的方法,把修改前的对象和修改后对象传过去就行了。新增、删除也差不多,只是只用传一个对象。
kytrun
2022-04-26 08:58:49 +08:00
siweipancc
2022-04-26 09:12:37 +08:00
……我手撸 aop 的跟美团一样的逻辑,几年前搜索不到对应方案自己折腾出来的,那时候竟然还搜不出来这文,fuxx google
Uyuhz
2022-04-26 09:52:25 +08:00
美团那篇博客不错,前天刚看过
golangLover
2022-04-26 09:54:42 +08:00
@siweipancc 牛,美团级别的高手
anxn
2022-04-26 10:00:39 +08:00
感谢各位 V 友!
KevinBlandy
2022-04-26 17:12:57 +08:00
你可以试试看这个方式。Aop + Spel

https://springboot.io/t/topic/4248
iflyapi
2022-04-26 22:33:04 +08:00
正好我也写了一个: https://github.com/flyhero/easy-log

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX