通用日志组件: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 | 记录成功日志的条件,默认为空,代表不抛异常为成功。如果想通过方法的返回结果来判断,可以通过这个属性来做 |

浙公网安备 33010602011771号