# Springboot-注解-通用操作日志组件
此组件解决的问题是: 「谁」在「什么时间」对「什么」做了「什么事」
> 本组件目前针对 Spring-boot 做了 Autoconfig,如果是 SpringMVC,也可自己在 xml 初始化 bean
## Change Log
2.0.0版本修改了一些变量名称,而且做的使向下不兼容的修改,如果大家不想改,可以一直使用1.x的版本,后续还会迭代的, 如果第一次接入推荐大家使用最新版本 3.X ~~ 1.x 文档: ./doc/document-1.x.md
修改点:
1. 把注解 @LogRecordAnnotation 修改为了@LogRecord
2. 把注解 @LogRecordAnnotation 的prefix 修改为type字段
3. 把注解 @LogRecordAnnotation 的category修改为subType字段
4. 把注解 @LogRecordAnnotation 的detail修改为extra字段
5. 把LogRecord实体的字段prefix、category、detail修改为 type、subtype、extra
6. 实现了默认的 server 端,采用的使用数据库存储
### 最近主要修改 (!!创建了技术交流群,微信二维码在在文章末尾,欢迎大家加入一起探讨技术!!!)
| 版本 | 状态 |
|-------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 3.0.6 | 提供global变量清除方法,用户需要根据实际自己清除global变量 |
| 3.0.5 | 1.修复参数全局传递未获取到值 2.diffLog未生效 3.优化文案比对格式,支持重载 toString 和 equals 方法 |
| 3.0.4 | 1.修复fix:修复LocalDateTime diff (#111, #114), 2. 固定文案判断错误 |
| 3.0.3 | 1.修复日志打印两次的问题 2.方法支持多注解(#98) 3.相同对象diff不记录日志 详细使用方式见 IOrderServiceTest |
| 3.0.2 | 1.修复 DIffLogIgnore注解在集合类型上失效问题 2.支持跨方法的全局变量 3. 支持日志记录异常与业务逻辑一起回滚的逻辑,默认日志记录不影响业务逻辑 |
| 3.0.1 | diff 功能支持了数组(https://github.com/mouzt/mzt-biz-log/issues/75) ,增加判断是否成功的条件表达式,增加 @DiffLogAllFields、@DIffLogIgnore 注解支持 |
| 3.0.0 | 暂时删除了list实现优化中,增加了xml的方式,增加了性能监控接口,修复了function 内的 service 需要添加 @Lazy 的问题 || 2.0.2 | 1.修复了 LogFunctionParser 的NPE,2. 注解上添加了ElementType.TYPE,3.记录了当前执行方法的Class和Method 4. 重新fix了没有加EnableTransactionManagement 切面不生效的逻辑 5. 增加了 Subtype 的 SpEl解析 |
| 2.0.2 | 1.修复了 LogFunctionParser 的NPE,2. 注解上添加了ElementType.TYPE,3.记录了当前执行方法的Class和Method 4. 重新fix了没有加EnableTransactionManagement 切面不生效的逻辑 5. 增加了 Subtype 的 SpEl解析 |
| 2.0.1 | 修复了接口上的注解不能被拦截的问题 |
| 2.0.0 | 1.修改了@LogRecordAnnotation 注解的名字 到LogRecord |
| 1.1.1 | 1. 修复了自定义函数返回美元符号解析失败问题,2. 修复before自定义函数bug,3.删除了diff最后一个分隔符 |
| 1.1.0 | 1. 支持了对象DIFF,release 稳定下再发版 2.Function 的参数从 String修改为 Object了,可以给自定函数传递对象啦~~ 3. fix了没有加EnableTransactionManagement 切面不生效的逻辑 4. 添加了fail标志,代表是否成功 |
| 1.0.8 | 自定义函数支持 在业务的方法运行前执行 |
| 1.0.5 | 支持 condition;修复https://github.com/mouzt/mzt-biz-log/issues/18 |
| 1.0.4 | 支持 Context 添加变量 |
| 1.0.1 | 发版 |
## 使用方式(对象DIFF功能终于支持了)
### 基本使用
#### maven依赖添加SDK依赖
```
<dependency>
<groupId>io.github.mouzt</groupId>
<artifactId>bizlog-sdk</artifactId>
<version>3.0.6</version>
</dependency>
```
#### SpringBoot入口打开开关,添加 @EnableLogRecord 注解
tenant是代表租户的标识,一般一个服务或者一个业务下的多个服务都写死一个 tenant 就可以
```java
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableTransactionManagement
@EnableLogRecord(tenant = "com.mzt.test")
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
```
#### 日志埋点
###### 1. 普通的记录日志
* type:是拼接在 bizNo 上作为 log 的一个标识。避免 bizNo 都为整数 ID 的时候和其他的业务中的 ID 重复。比如订单 ID、用户 ID 等,type可以是订单或者用户
* bizNo:就是业务的 ID,比如订单ID,我们查询的时候可以根据 bizNo 查询和它相关的操作日志
* success:方法调用成功后把 success 记录在日志的内容中
* SpEL 表达式:其中用双大括号包围起来的(例如:{{#order.purchaseName}})#order.purchaseName 是 SpEL表达式。Spring中支持的它都支持的。比如调用静态方法,三目表达式。SpEL 可以使用方法中的任何参数
```
@LogRecord(
success = "{{#order.purchaseName}}下了一个订单,购买商品「{{#order.productName}}」,测试变量「{{#innerOrder.productName}}」,下单结果:{{#_ret}}",
type = LogRecordType.ORDER, bizNo = "{{#order.orderNo}}")
public boolean createOrder(Order order) {
log.info("【创建订单】orderNo={}", order.getOrderNo());
// db insert order
Order order1 = new Order();
order1.setProductName("内部变量测试");
LogRecordContext.putVariable("innerOrder", order1);
return true;
}
```
此时会打印操作日志 "张三下了一个订单,购买商品「超值优惠红烧肉套餐」,测试变量「内部变量测试」,下单结果:true"
###### 2. 期望记录失败的日志, 如果抛出异常则记录fail的日志,没有抛出记录 success 的日志。从 1.1.0-SNAPSHOT 版本开始,在LogRecord实体中添加了 fail 标志,可以通过这个标志区分方法是否执行成功了
```
@LogRecord(
fail = "创建订单失败,失败原因:「{{#_errorMsg}}」",
success = "{{#order.purchaseName}}下了一个订单,购买商品「{{#order.productName}}」,测试变量「{{#innerOrder.productName}}」,下单结果:{{#_ret}}",
type = LogRecordType.ORDER, bizNo = "{{#order.orderNo}}")
public boolean createOrder(Order order
没有合适的资源?快使用搜索试试~ 我知道了~
支持Springboot,基于注解的可使用变量、可以自定义函数的通用操作日志组件.zip
共104个文件
java:83个
xml:4个
sql:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2024-04-08
22:00:31
上传
评论
收藏 234KB ZIP 举报
温馨提示
可以用于毕业设计(项目源码+项目说明)目前在window10/11测试环境一切正常,用于演示的图片和部署教程说明都在压缩包里
资源推荐
资源详情
资源评论
收起资源包目录
支持Springboot,基于注解的可使用变量、可以自定义函数的通用操作日志组件.zip (104个子文件)
.gitignore 235B
spring.handlers 96B
IOrderServiceTest.java 31KB
IUserServiceTest.java 23KB
LogRecordInterceptor.java 12KB
OrderServiceImpl.java 10KB
DefaultDiffItemsToLogContentService.java 9KB
LogRecordValueParser.java 7KB
BizLogBeanDefinitionParser.java 7KB
ArrayDiffer.java 6KB
LogRecordOperationSource.java 6KB
ISkuServiceTest.java 6KB
LogRecordProxyAutoConfiguration.java 6KB
LogRecordProperties.java 5KB
DiffParseFunction.java 4KB
SkuServiceImpl.java 4KB
RandomPOJOUtils.java 3KB
ArrayItemAccessor.java 3KB
AssertUtils.java 3KB
LogRecordContext.java 3KB
LogRecordPO.java 3KB
UserServiceImpl.java 2KB
LogRecordExpressionEvaluator.java 2KB
FastDiffUtil.java 2KB
IOrderService.java 2KB
LogRecord.java 2KB
LogFunctionParser.java 2KB
LogRecordRepositoryImpl.java 2KB
IUserService.java 2KB
ShiroConfig.java 2KB
EnableLogRecord.java 2KB
JoinTransactionLogRecordService.java 1KB
User.java 1KB
ShiroTestController.java 1KB
LogRecordEvaluationContext.java 1KB
LogRecord.java 1KB
DbLogRecordService.java 1KB
AbsUserServiceImpl.java 1KB
TestLogRecordServiceImpl.java 1KB
ParseFunctionFactory.java 1KB
Order.java 1KB
UserBeanAspect.java 1KB
OrderBeforeParseFunction.java 1KB
DiffFunction.java 1KB
LogRecordConfigureSelector.java 995B
DefaultLogRecordServiceImpl.java 969B
OrderParseFunction.java 948B
Main.java 947B
MethodExecuteResult.java 921B
DefaultFunctionServiceImpl.java 907B
ShiroTestRealm.java 906B
DataSourceAutoConfig.java 875B
ILogRecordService.java 833B
UserQueryServiceImpl.java 808B
LogRecordPointcut.java 793B
ExtInfoParseFunction.java 740B
BaseTest.java 728B
DefaultOperatorGetServiceImpl.java 659B
LogRecordRepository.java 645B
SexParseFunction.java 625B
BeanFactoryLogRecordAdvisor.java 623B
IdentityParseFunction.java 555B
IParseFunction.java 538B
DefaultLogRecordPerformanceMonitor.java 475B
LogRecordOps.java 456B
DefaultParseFunction.java 452B
Result.java 449B
DollarParseFunction.java 436B
BizLogNamespaceHandler.java 432B
IOperatorGetService.java 362B
SkuService.java 360B
ObjectSku.java 354B
ILogRecordPerformanceMonitor.java 338B
DiffLogField.java 297B
LogRecordType.java 291B
Operator.java 286B
IDiffItemsToLogContentService.java 277B
LogRecordMapper.java 277B
DiffLogAllFields.java 256B
DIffLogIgnore.java 252B
LogRecords.java 248B
UserQueryService.java 240B
LogEnumType.java 217B
IFunctionService.java 175B
CodeVariableType.java 163B
wechat-me.jpeg 76KB
wechat-group.jpg 35KB
LICENSE 11KB
readme.md 36KB
document-2.x.md 28KB
document-1.x.md 26KB
spring.schemas 70B
create.sql 1KB
create.sql 1KB
clean.sql 24B
clean.sql 24B
项目授权码.txt 268B
pom.xml 4KB
pom.xml 4KB
pom.xml 2KB
共 104 条
- 1
- 2
资源评论
不走小道
- 粉丝: 3175
- 资源: 3971
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功