KouShuiYu
V2EX  ›  问与答

我需要给系统加个日志,主要包括用户创建,删除,修改前的信息。 目前我的的做法很简单通过一个中间件拦截请求参数、和结果,把这些信息写到数据库中

  •  1
     
  •   KouShuiYu · Dec 7, 2020 · 2007 views
    This topic created in 2167 days ago, the information mentioned may be changed or developed.
    这种方法如果是修改,还需要针对不同的接口查询旧值额外查询一遍然后对比,领导让我看看其他人是怎么做的,
    谈谈你们怎么做的!讨论一下?
    12 replies  •  2020-12-07 21:42:41 +08:00
    XDJI
    XDJI
    Dec 7, 2020
    1
    额 看了下这些修改都是数据库的吗 如果是的话像 mysql 监听 binlog 有变动发 mq 消费端做清洗或使用可以吗
    cameco
    cameco
    Dec 7, 2020
    2
    同意楼上的做法,开启 binlog 根据日志去清洗成你想要的结构放入队列就好了。
    qiayue
    qiayue
    Dec 7, 2020
    3
    日志写到数据库中,那么流量一大,你的数据库就会亚历山大
    KouShuiYu
    KouShuiYu
    OP
    Dec 7, 2020
    4
    日志里面还需要记录 ip 和那个用户操作的的信息,用 binlog 应该不行吧,我看 binlog 描述是不包含这些信息
    KouShuiYu
    KouShuiYu
    OP
    Dec 7, 2020
    5
    @XDJI @XDJI @guisheng @qiayue 日志里面还需要记录 ip 和那个用户操作的的信息,用 binlog 应该不行吧,我看 binlog 描述是不包含这些信息
    XDJI
    XDJI
    Dec 7, 2020
    6
    @KouShuiYu 哦哦 那就有点像 trace 了 java 可以开 aop 记录到队列里(注意性能 比如用 Disruptor ) 然后开一个上报线程每隔 5s 进行上报 (发到 mq 或直接消费 比较偏向发 mq )。然后消费端做使用或者清洗。主要就是和服务解耦,要评估下日志量和请求量看看采用啥组件比较好
    XDJI
    XDJI
    Dec 7, 2020
    7
    如果不想引入 mq 可以专门弄个接日志的服务去处理 然后针对不同环境配不同日志上报 ip
    Aviciii
    Aviciii
    Dec 7, 2020
    8
    我也遇到过,要记录表单某个字段的修改历史,修改前后的信息都要记录,印象里是用了对象属性值对比去做的,比较笨
    svipchao
    svipchao
    Dec 7, 2020
    9
    监控 SQL 语句?去除无效请求参数,只监控增删改,然后记录请求参数,这样的话就没必要记录旧值了,每次增删改都会有记录
    cheng6563
    cheng6563
    Dec 7, 2020
    10
    就这样做没啥问题,注意一下不要因为日志表挂了导致主要业务也挂了就行了。
    tiedan
    tiedan
    Dec 7, 2020
    11
    单独写个小系统 消费日志来做
    MaxFang
    MaxFang
    Dec 7, 2020
    12
    简单的可以放到单独的消息里面,一个小系统来处理。这样做的好处是,多系统方便接入(不用每个系统都写一套),日志接入不侵入系统,方便后续接入其他的日志。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1877 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 00:16 · PVG 08:16 · LAX 16:16 · JFK 19:16
    ♥ Do have faith in what you're doing.