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

2020-12-07 16:39:19 +08:00
 KouShuiYu
这种方法如果是修改,还需要针对不同的接口查询旧值额外查询一遍然后对比,领导让我看看其他人是怎么做的,
谈谈你们怎么做的!讨论一下?
1270 次点击
所在节点    问与答
12 条回复
XDJI
2020-12-07 16:44:23 +08:00
额 看了下这些修改都是数据库的吗 如果是的话像 mysql 监听 binlog 有变动发 mq 消费端做清洗或使用可以吗
guisheng
2020-12-07 16:47:51 +08:00
同意楼上的做法,开启 binlog 根据日志去清洗成你想要的结构放入队列就好了。
qiayue
2020-12-07 16:51:15 +08:00
日志写到数据库中,那么流量一大,你的数据库就会亚历山大
KouShuiYu
2020-12-07 16:58:47 +08:00
日志里面还需要记录 ip 和那个用户操作的的信息,用 binlog 应该不行吧,我看 binlog 描述是不包含这些信息
KouShuiYu
2020-12-07 16:59:14 +08:00
@XDJI @XDJI @guisheng @qiayue 日志里面还需要记录 ip 和那个用户操作的的信息,用 binlog 应该不行吧,我看 binlog 描述是不包含这些信息
XDJI
2020-12-07 17:04:29 +08:00
@KouShuiYu 哦哦 那就有点像 trace 了 java 可以开 aop 记录到队列里(注意性能 比如用 Disruptor ) 然后开一个上报线程每隔 5s 进行上报 (发到 mq 或直接消费 比较偏向发 mq )。然后消费端做使用或者清洗。主要就是和服务解耦,要评估下日志量和请求量看看采用啥组件比较好
XDJI
2020-12-07 17:06:04 +08:00
如果不想引入 mq 可以专门弄个接日志的服务去处理 然后针对不同环境配不同日志上报 ip
Aviciii
2020-12-07 17:07:04 +08:00
我也遇到过,要记录表单某个字段的修改历史,修改前后的信息都要记录,印象里是用了对象属性值对比去做的,比较笨
svipchao
2020-12-07 17:12:58 +08:00
监控 SQL 语句?去除无效请求参数,只监控增删改,然后记录请求参数,这样的话就没必要记录旧值了,每次增删改都会有记录
cheng6563
2020-12-07 17:21:59 +08:00
就这样做没啥问题,注意一下不要因为日志表挂了导致主要业务也挂了就行了。
tiedan
2020-12-07 19:33:14 +08:00
单独写个小系统 消费日志来做
MaxFang
2020-12-07 21:42:41 +08:00
简单的可以放到单独的消息里面,一个小系统来处理。这样做的好处是,多系统方便接入(不用每个系统都写一套),日志接入不侵入系统,方便后续接入其他的日志。

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

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

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

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

© 2021 V2EX