04小节:引入日志组件优雅记录日志
作者:程序员马丁
note
热门项目实战社群,收获国内众多知名公司面试青睐,近千名同学面试成功!助力你在校招或社招上拿个offer。
引入日志组件优雅记录操作日志,元数据信息:
- 什么是牛券oneCoupon:https://t.zsxq.com/pAWgS
- 代码仓库:https://gitcode.net/nageoffer/onecoupon —— 申请项目权限参考上述牛券项目链接
- 章节难度:★★★☆☆ - 较难
- 视频地址:文档先行视频次之
©版权所有 - 拿个offer-开源&项目实战星球专属学习项目,依据《中华人民共和国著作权法实施条例》和《知识星球产权保护》,严禁未经本项目原作者明确书面授权擅自分享至 GitHub、Gitee 等任何开放平台。违者将面临法律追究。
内容摘要:引入 SpringAOP 和 SpEL 概念,通过 mzt-biz-log 框架优雅记录优惠券模板操作日志,并针对优惠券模板记录表进行分库分表操作。
课程目录如下所示:
- 业务背景
- Git 分支
- 记录操作日志
- 通过 SpringAOP 和 SpEL 优雅记录
- 美团 mzt-biz-log 操作日志框架
- 常见问题答疑
业务背景
系统操作日志是用于记录系统中用户或系统本身所执行的各类操作的日志信息。这些日志通常包括操作的时间、操作的用户、具体操作内容、操作结果以及其他相关信息。
- 安全审计:记录用户操作以防止恶意行为,确保系统的安全性。
- 问题排查:在系统出现问题时,可以通过操作日志快速定位问题来源。
Git 分支
20240816_dev_operation-log_mzt-biz-log_ding.ma
记录操作日志
如果我们在已有业务加上操作日志,时序图如下所示:
1. 数据库表设计
关于操作日志记录表,有两种设计思路:
- 统一管理:t_operation_log,比如优惠券操作、权限操作等放在一张表。
- 细粒度拆分:t_coupon_template_log,操作记录随着业务隔离。
如果系统不大业务不复杂我建议前者,如果系统挺大,我建议后者。
CREATE TABLE `t_coupon_template_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`shop_number` bigint(20) DEFAULT NULL COMMENT '店铺编号',
`coupon_template_id` bigint(20) DEFAULT NULL COMMENT '优惠券模板ID',
`operator_id` bigint(20) DEFAULT NULL COMMENT '操作人',
`operation_log` text COMMENT '操作日志',
`original_data` varchar(1024) DEFAULT NULL COMMENT '原始数据',
`modified_data` varchar(1024) DEFAULT NULL COMMENT '修改后数据',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_shop_number` (`shop_number`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1817866003552428034 DEFAULT CHARSET=utf8mb4 COMMENT='优惠券模板操作日志表';
因为优惠券模板操作日志表会记录模板的创建、修改等任意操作,所以也需要分表,规则同优惠券模板表。