通用日志组件:mzt-biz-log

通用日志组件

开发中遇到日志记录需求?别急着造轮子。

推荐 mzt-biz-log —— 一套开箱即用的通用操作日志组件,轻松记录「谁」在「何时」对「什么」做了「何事」。

项目地址:https://github.com/mouzt/mzt-biz-log

快速上手

这里以 SpringBoot3,JDK17 版本为例

首先,在 pom 文件中引入依赖

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

在 SpringBoot 的启动类上,开启日志记录,tenant 标识租户信息

@EnableLogRecord(tenant = "com.coding")

在需要进行日志记录的接口上,打上相关的注解

@PostMapping("/regist")
@LogRecord(
    type = "system", subType = "user", bizNo = "",
    success = "用户名:{{#userReq.username}} 成功注册, 注册完成的用户ID: {{#_ret.data}}",
    fail = "用户名:{{#userReq.username}} 注册失败,失败原因:{{#_errorMsg}}"
)
public Result<Long> register(@RequestBody UserReq userReq) throws Exception {
    if ("1".equals(userReq.getUsername())) {
        return Result.success(2L);
    }
    throw new Exception("用户名称已经存在");
}

定义 ILogRecordService 的实现类,处理对应的日志请求

@Component
@Slf4j
public class LogRecordServiceImpl implements ILogRecordService {
    @Override
    public void record(LogRecord logRecord) {
        log.info("接受到操作日志:{}", logRecord);
    }

    @Override
    public List<LogRecord> queryLog(String bizNo, String type) {
        return Collections.emptyList();
    }

    @Override
    public List<LogRecord> queryLogByBizNo(String bizNo, String type, String subType) {
        return Collections.emptyList();
    }
}

访问对应的接口,就能够看到对应的日志输出。使用起来较为方便,只需要在 record 方法之中实现对应的记录日志的操作即可。

这里对其中的一些特殊点进行说明:

  • {{#_errorMsg}} :用来读取方法执行失败后,抛出异常的 errorMessage
  • {{#_ret}}: 用来读取方法的返回结果

@LogRecord

@LogRecord 注解定义了日志记录的核心属性。值得注意的是,所有属性均为 String 类型,其值通过 SpEL 表达式在运行时动态解析

注解里面注释很清楚,这里就不做赘述

这些属性最终会被解析并映射到 LogRecord 实体类中。以下是几个关键属性的深入说明:

属性 备注
operator 操作人,这支持通过 SpEL 从方法参数中读取,不过更多是在 ILogRecordService#record 最终保存日志时,统一设置
condition 是否记录日志,SpEL 表达式返回 true 时执行记录
successCondition 记录成功日志的条件,默认为空,代表不抛异常为成功。如果想通过方法的返回结果来判断,可以通过这个属性来做
posted @ 2026-03-08 22:54  不会Coding  阅读(3)  评论(0)    收藏  举报