跳至主要內容

log日志组件

杨轩-国实信息大约 1 分钟常用组件日志

git地址:

http://10.16.202.103:8089/component/component-ser/log-spring-boot-starter

使用方式

  1. 引入pom依赖
<dependency>
    <groupId>com.gosci.tech</groupId>
    <artifactId>log-spring-boot-starter</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>
  1. 配置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
}