当前位置: 首页 > 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.cnnetsun.cn/news/3521687.html

相关文章:

  • 鸿蒙ArkUI实战:生成账本数据导出预览
  • C2000 ePWM高级功能解析:谷底开关、多模块同步与HRPWM实战
  • Priceline Design System 企业级应用案例:如何在大型项目中实施设计系统
  • Intern-S2-Preview-397B-FP8代理集成:连接OpenClaw和Hermes的终极指南
  • QobuzDownloaderX-MOD用户指南:自定义音乐下载路径与音质设置全攻略
  • 【2024最严苛AI模型功能评测】:从零代码微调到合规审计,仅2款模型通过全部19项企业级交付验收标准
  • 关于图论【力扣797.所有可能的路径的思考】
  • DingFlow:基于React的高效审批流程构建工具终极指南
  • 邮件系统错误处理与智能诊断方案Mail-Error详解
  • 如何快速安装Lyric-Getter:Xposed模块歌词获取完整教程
  • pgagroal源码解析:深入理解PostgreSQL高性能连接池的核心实现原理
  • 《持续交付2.0系列四》组织文化---从恐惧到信任
  • BiliScope终极指南:解锁B站深度浏览体验的免费神器
  • AI+医疗:从疾病诊断到新药研发,哪些领域已落地?
  • 3步掌握猫抓扩展:让网页视频下载变得像截图一样简单
  • 猫抓浏览器扩展:免费视频下载与资源嗅探的终极指南
  • 终极指南:3步在macOS上创建完美Windows启动盘
  • 猫抓浏览器资源嗅探扩展:基于HLS/DASH协议的流媒体捕获技术解析
  • grunt-contrib-copy 社区贡献指南:如何参与插件开发与维护
  • 解决iOS导航栏冲突难题:GKNavigationBarViewController高级用法详解
  • 3步极速瘦身:用Win11Debloat彻底清理Windows 11系统冗余
  • 猫抓浏览器插件:网页资源嗅探与下载的完整解决方案
  • BiliScope:你的B站智能助手终极指南
  • rules_foreign_cc跨平台指南:在Linux、macOS和Windows上的最佳实践
  • Barrier:创新跨平台键盘鼠标共享解决方案
  • Nemo Skills数学推理评估指南:AIME、AMC等10大数学竞赛数据集实战
  • 三伏轻补首选黄精,4组温润茶饮安稳度夏
  • 实测分享:用这个工具轻松检测 AI 生成代码,再也不怕代码审查翻车!
  • GKNavigationBarViewController核心组件解析:从导航栏到转场动画
  • Zeroshot安全指南:保护AI编码过程中的敏感信息