log日志组件
大约 1 分钟常用组件日志
git地址:
http://10.16.202.103:8089/component/component-ser/log-spring-boot-starter
使用方式
- 引入pom依赖
<dependency>
<groupId>com.gosci.tech</groupId>
<artifactId>log-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
- 配置kafka信息
spring:
kafka:
bootstrap-servers: 120.221.72.175:9106
producer:
retries: 0
batch-size: 16384
buffer-memory: 33554432
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
acks: 1
3.配置发送消息的队列
log:
topic: archetype-dev
日志会被发送到这个topic,在basic服务中进行消费。
日志类型
日志通过@Log
注解方式进行声明,通过其中的type
字段进行分类。
登录日志
@Log(type = LogType.LOGIN)
调用日志
@Log(type = LogType.CALL,opeType = OpeType.QRY)
opeType
枚举分为四种类型:
- ADD:新增
- DEL:删除
- MOD:修改
- QRY:查询,不带参数时默认使用
QRY
数据日志
数据日志比前两种相对复杂一些,示例:
@Log(type = LogType.DATA, mapper = ISysRoleMapper.class, key = "#userId")
public Result<Set<String>> getUserRoles(@RequestParam("userId") Long userId ) {
return Result.success(sysRoleService.getUserRoles(userId));
}
说明一下两个参数:
mapper
:因为要记录接口执行前后的数据镜像,所以需要依赖一个Mapper进行数据查询key
:通过el表达式的方式指明mapper对应的数据表的主键取值
可以看一下打印的日志:
{
"logType": "DATA",
"opeType": null,
"path": "/sys/role/userRoles",
"params": null,
"beforeImg": "{\"id\":1,\"roleName\":\"ADMIN\",\"roleDesc\":null,\"status\":0,\"systemId\":null,\"createBy\":null,\"createTime\":null,\"updateBy\":null,\"updateTime\":null,\"delFlag\":0}",
"afterImg": "{\"id\":1,\"roleName\":\"ADMIN\",\"roleDesc\":null,\"status\":0,\"systemId\":null,\"createBy\":null,\"createTime\":null,\"updateBy\":null,\"updateTime\":null,\"delFlag\":0}",
"callTime": "2024-01-12 18:00:45",
"userId": 1,
"userName": "admin",
"agent": "Unknown",
"servName": "gosci-tech-auth-archetype",
"status": 0,
"failDesc": null
}