anxn
V2EX  ›  Java

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

  •  
  •   anxn · Apr 26, 2022 via Android · 5829 views
    This topic created in 1491 days ago, the information mentioned may be changed or developed.

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

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

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

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

    https://springboot.io/t/topic/4248
    iflyapi
        15
    iflyapi  
       Apr 26, 2022
    正好我也写了一个: https://github.com/flyhero/easy-log
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2876 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 15:20 · PVG 23:20 · LAX 08:20 · JFK 11:20
    ♥ Do have faith in what you're doing.