V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anxn
V2EX  ›  Java

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

  •  
  •   anxn · 2022-04-26 00:32:25 +08:00 via Android · 4920 次点击
    这是一个创建于 960 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    https://springboot.io/t/topic/4248
    iflyapi
        15
    iflyapi  
       2022-04-26 22:33:04 +08:00
    正好我也写了一个: https://github.com/flyhero/easy-log
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4656 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.