当前位置: 首页 > news >正文

如何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),仅供参考

http://www.jsqmd.com/news/1220318/

相关文章:

  • Talisman语音编码算法终极指南:Soundex、Metaphone和Double Metaphone深度比较
  • 秦皇岛防水修缮优选|筑宅安99.5高分五星品牌,专治梅雨季各类漏水难题 - 筑宅安
  • Git 的日常主线:clone、add、commit、pull、push 一次讲清
  • 为什么每个项目都需要README:Make a README的核心价值解析
  • 纯HTML单文件实现玛雅十字帕托利 —— 用52格闭环与5颗豆子还原古玛雅双人棋
  • 掌握JavaScript高性能数据处理:Structurae的RankedBitArray实战指南
  • 【养老照护微项目管理实务连载】3.2 收集需求
  • PyTorch Kinematics核心功能揭秘:并行与可微的机器人运动学解决方案
  • GeoPort虚拟定位指南:3分钟掌握iOS设备全球位置模拟技巧
  • 别再乱花钱报课了!这 9 个国家官方免费学习平台,从小学到退休全包了,建议收藏
  • OpCore-Simplify:基于硬件智能识别的OpenCore配置自动化引擎
  • 终极指南:3步在macOS上创建完美Windows启动盘
  • 鸿蒙ArkTS实战:接入Preferences保存账本设置
  • TMS320F2838x USB开发:从寄存器到Driverlib函数映射详解
  • 高效自我介绍技巧:30秒让人记住你
  • Ryujinx:如何用C模拟器技术解决Switch游戏PC化难题
  • 量子门生成算法:深入理解 QuSimPy 中的多量子比特门构建
  • TMS320F2838x DMA配置与优化:从原理到嵌入式系统数据搬运实战
  • 02-安装与配置
  • 【限时解密】钉钉开放平台v2.10+Dify v0.9.2联合认证流程上线倒计时:仅剩72小时兼容性适配窗口期
  • 【稀缺首发】阿里/微软/ThoughtWorks联合验证的AI-DDD融合框架V1.0(限前500名开发者领取架构决策清单)
  • 网易云音乐NCM格式终极解密指南:5分钟掌握免费高效转换技巧
  • 从用户到开发者:贡献代码到 Iris Messenger 开源项目的完整路径
  • 基于YOlO的水果成熟度检测系统
  • physx-rs开发进阶:内存安全与性能优化的终极技巧
  • TAPE社区贡献指南:如何参与蛋白质嵌入评估工具的开发与改进
  • YimMenu终极指南:5分钟掌握GTA5最强保护菜单配置
  • 如何利用AI视频制作工具在5分钟内创作专业短视频?零基础入门指南
  • LDDC终极指南:如何高效获取精准逐字歌词与多平台歌词匹配
  • TDD在生成式AI开发中的5大认知陷阱,90%开发者至今未察觉——含GPT-4o实测对比数据