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

增加用户操作记录审计,并用 mq 同步日志如何不影响现有逻辑?

  •  1
     
  •   Vimax · 2020-08-21 15:24:06 +08:00 · 1668 次点击
    这是一个创建于 1315 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后台管理业务中,想加入一个日志操作记录的功能,将记录通过 MQ 同步给平台的日志系统。

    有哪些方案可以实现并且不影响现有业务逻辑?

    前提要保证:无论日志同步是否异常,都不能影响现有逻辑。

    并且希望是能够个现有业务接耦的。

    目前想到的是:

    • AOP 后置增强

    但是要在每个方法上加注解好像是有些麻烦。

    5 条回复    2020-08-21 15:58:15 +08:00
    xuanbg
        1
    xuanbg  
       2020-08-21 15:41:00 +08:00   ❤️ 1
    接口请求日志包含了用户操作信息,所以可以在网关上面增加接口请求日志来实现。也用不到 mq 。

    如果你想要比较纯粹的,数据格式更加友好的操作日志,譬如 xxx 将 yyy 修改为 zzz 这样的,就只能在业务逻辑里面调用日志工具类的静态方法来记录了。这种可以通过 mq 去异步写库。
    Vimax
        2
    Vimax  
    OP
       2020-08-21 15:50:23 +08:00
    @xuanbg 嗯,是后面那种。日志工具类会侵入代码,出现异常会影响现有业务的正常执行吧。
    letitbesqzr
        3
    letitbesqzr  
       2020-08-21 15:50:42 +08:00   ❤️ 1
    但是要在每个方法上加注解好像是有些麻烦。

    ---

    如果这也不想加的话,可以尝试用 asm 来做,启动参数加上-javaagent:xxx.jar
    wysnylc
        4
    wysnylc  
       2020-08-21 15:56:17 +08:00
    写个方法,在里面 trycatch 所有异常不就得了
    xuanbg
        5
    xuanbg  
       2020-08-21 15:58:15 +08:00   ❤️ 1
    @Vimax 你这种需求,本身就和业务绑定在一起的,不用去想怎么解耦。你开一个线程异步去写日志,失败也不会让主线程崩溃的。反正日志数据又不是必需要记录成功的。其实你通过 mq 去写日志,基本可以认为不会失败了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3907 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.