news 2026/7/19 14:33:56

如何5分钟快速上手SpringBoot操作日志组件mzt-biz-log

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何5分钟快速上手SpringBoot操作日志组件mzt-biz-log

如何5分钟快速上手SpringBoot操作日志组件mzt-biz-log

【免费下载链接】mzt-biz-log支持Springboot,基于注解的可使用变量、可以自定义函数的通用操作日志组件项目地址: https://gitcode.com/gh_mirrors/mz/mzt-biz-log

还在为系统操作日志记录而烦恼吗?手动编写日志代码不仅繁琐,还容易出错。mzt-biz-log是一款基于注解的SpringBoot通用操作日志组件,它能帮你自动记录"谁在什么时间对什么做了什么事",让日志记录变得简单高效。

为什么你需要这个操作日志组件?

想象一下这样的场景:用户A在2025年7月19日14:30修改了订单12345的收货地址。如果没有自动化的日志记录,你需要:

  1. 手动获取当前用户信息
  2. 记录操作时间
  3. 对比新旧数据差异
  4. 格式化日志内容
  5. 处理异常情况

而使用mzt-biz-log,只需要一个注解:

@LogRecord(success = "更新了订单收货地址{_DIFF{#oldAddress, #newAddress}}", type = "order.update", bizNo = "{{#orderId}}") public void updateOrderAddress(Long orderId, Address oldAddress, Address newAddress) { // 业务逻辑 }

传统方式 vs mzt-biz-log对比

对比项传统手动记录mzt-biz-log注解方式
代码量每个方法10-20行只需1行注解
维护成本高,每个方法都要修改低,集中配置
一致性难以保证格式统一统一模板管理
可读性业务逻辑与日志代码混杂业务代码清晰
扩展性修改困难支持自定义函数扩展

核心特性展示

🎯 智能对象差异对比

自动对比修改前后的对象,生成清晰易懂的变更日志:

更新了订单【收货地址】从【北京市海淀区】修改为【上海市浦东新区】; 【订单状态】从【待发货】修改为【已发货】; 【备注信息】添加了【客户要求加急】

🔧 灵活的自定义函数

内置丰富的函数库,支持自定义扩展:

@Component public class UserParseFunction implements IParseFunction { @Override public String functionName() { return "USER"; } @Override public String apply(Object value) { // 将用户ID转换为用户名 return userService.getUserNameById(value.toString()); } }

使用方式:{USER{#userId}}→ "张三(1001)"

📊 多维度日志分类

支持按业务类型、操作子类型分类,方便后续查询分析:

@LogRecord( success = "{{#operator}}审核了订单{ORDER{#orderId}},审核结果:{{#result}}", type = "order.audit", subType = "MANAGER_OPERATION", // 管理员操作 bizNo = "{{#orderId}}" )

5分钟快速开始指南

步骤1:添加依赖

<dependency> <groupId>io.github.mouzt</groupId> <artifactId>bizlog-sdk</artifactId> <version>3.0.7-SNAPSHOT</version> </dependency>

步骤2:启用日志功能

在SpringBoot启动类添加注解:

@SpringBootApplication @EnableLogRecord(tenant = "your-app-name") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

步骤3:开始记录日志

在需要记录日志的方法上添加注解:

@Service public class OrderService { @LogRecord( success = "创建了订单,订单号:{{#order.orderNo}},金额:{{#order.amount}}元", fail = "创建订单失败,原因:{{#_errorMsg}}", type = "order.create", bizNo = "{{#order.orderNo}}" ) public Order createOrder(OrderDTO orderDTO) { // 业务逻辑 return orderRepository.save(convertToOrder(orderDTO)); } }

步骤4:配置存储方式(可选)

默认支持数据库存储,也可扩展其他存储:

@Service public class CustomLogRecordService implements ILogRecordService { @Override public void record(LogRecord logRecord) { // 存储到ES、消息队列或文件系统 log.info("操作日志:{}", logRecord); } }

高级应用场景

场景1:敏感字段过滤

某些字段(如密码、手机号)不应该记录到日志中:

public class User { private Long id; private String username; @DIffLogIgnore // 忽略该字段的差异记录 private String password; @DiffLogField(name = "手机号", function = "PHONE_MASK") // 自定义脱敏函数 private String phone; }

场景2:条件日志记录

只有满足特定条件时才记录日志:

@LogRecord( success = "调整了用户{{#userId}}的权限", type = "user.permission", condition = "{{#oldRole != #newRole}}" // 只有角色变化时才记录 ) public void updateUserRole(Long userId, String oldRole, String newRole) { // 更新逻辑 }

场景3:事务一致性

确保日志与业务操作在同一事务中:

@EnableLogRecord(tenant = "order-system", joinTransaction = true) @EnableTransactionManagement(order = 0) // 事务优先级更高 public class OrderApplication { // 配置类 }

项目结构概览

mzt-biz-log采用模块化设计,结构清晰:

bizlog-sdk/ # 核心SDK ├── src/main/java/com/mzt/logapi/ │ ├── starter/annotation/ # 注解定义 │ │ └── LogRecord.java # 核心注解 │ ├── service/ # 服务接口 │ │ ├── ILogRecordService.java │ │ └── IParseFunction.java # 自定义函数接口 │ └── support/aop/ # AOP实现 │ └── LogRecordInterceptor.java bizlog-server/ # 示例应用 ├── src/main/java/com/mzt/logserver/ │ ├── impl/OrderServiceImpl.java # 使用示例 │ └── function/ # 自定义函数示例 │ └── OrderParseFunction.java

常见问题解答

❓ 性能影响大吗?

组件采用AOP实现,性能开销极小。支持异步记录日志,几乎不影响业务响应时间。

❓ 支持哪些SpringBoot版本?

支持SpringBoot 2.x和3.x版本,兼容性良好。

❓ 如何自定义日志格式?

实现IDiffItemsToLogContentService接口即可完全控制日志输出格式。

❓ 日志存储在哪里?

默认支持数据库存储,也支持扩展存储到ES、消息队列或文件系统。

立即开始使用

mzt-biz-log已经在多个生产环境中稳定运行,帮助团队节省了大量日志开发时间。它的设计理念是"约定优于配置",让你专注于业务逻辑,而不是繁琐的日志代码。

克隆仓库开始体验:

git clone https://gitcode.com/gh_mirrors/mz/mzt-biz-log

查看完整示例:bizlog-server/src/main/java/com/mzt/logserver/impl/OrderServiceImpl.java

加入技术社区,与开发者一起交流使用心得,共同打造更好的操作日志解决方案!

【免费下载链接】mzt-biz-log支持Springboot,基于注解的可使用变量、可以自定义函数的通用操作日志组件项目地址: https://gitcode.com/gh_mirrors/mz/mzt-biz-log

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 14:33:52

鸿蒙ArkUI实战:生成账本数据导出预览

鸿蒙ArkUI实战&#xff1a;生成账本数据导出预览 技术栈&#xff1a;HarmonyOS ArkUI ArkTS 在 设置与本地数据 场景中&#xff0c;核心问题是&#xff1a;设置页的按钮通常很简单&#xff0c;真正困难的是界面状态、系统能力、本地保存和危险操作之间不能混为一谈。 本文以“…

作者头像 李华
网站建设 2026/7/19 14:33:47

C2000 ePWM高级功能解析:谷底开关、多模块同步与HRPWM实战

1. 项目概述与ePWM核心价值在电力电子和电机驱动的世界里&#xff0c;PWM&#xff08;脉冲宽度调制&#xff09;就像一位指挥家&#xff0c;通过精确控制开关信号的“开”与“关”的时间比例&#xff0c;来驾驭电流与电压的“交响乐”。无论是给手机充电的适配器&#xff0c;驱…

作者头像 李华
网站建设 2026/7/19 14:31:55

Intern-S2-Preview-397B-FP8代理集成:连接OpenClaw和Hermes的终极指南

Intern-S2-Preview-397B-FP8代理集成&#xff1a;连接OpenClaw和Hermes的终极指南 【免费下载链接】Intern-S2-Preview-397B-FP8 项目地址: https://ai.gitcode.com/InternLM/Intern-S2-Preview-397B-FP8 想要将Intern-S2-Preview-397B-FP8这个强大的3970亿参数多模态大…

作者头像 李华
网站建设 2026/7/19 14:31:17

【2024最严苛AI模型功能评测】:从零代码微调到合规审计,仅2款模型通过全部19项企业级交付验收标准

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI模型功能完整度对比的评测框架与方法论 构建科学、可复现的AI模型功能完整度评测体系&#xff0c;需兼顾能力维度覆盖性、测试用例代表性与评估结果可解释性。传统以准确率或F1值为核心的单一指标评测&…

作者头像 李华