日志中心
提供日志查询接口及日志基本信息的模型定义。
Maven坐标
xml
<dependency>
<groupId>com.ikingtech.framework</groupId>
<artifactId>sdk-log-api</artifactId>
</dependency>
接口列表:
接口地址 | 接口说明 |
---|---|
/log/operation/list/conditions | 查询操作日志。 |
/log/auth/list/page | 查询登录日志(分页)。 |
/log/auth/list/conditions | 查询登录日志。 |
/log/operation/list/page | 查询操作日志(分页)。 |
/log/operation/detail/id | 查询操作日志(日志编号) |
/log/system/list/page | 查询系统日志(分页)。 |
/log/system/detail/id | 查询系统日志(日志编号)。 |
日志中心嵌入组件
提供系统日志配置,操作日志注解,日志收集处理切面类。
请确保引入依赖:
xml
<dependency>
<groupId>com.ikingtech.framework</groupId>
<artifactId>sdk-log-embedded</artifactId>
</dependency>
配置
yaml
iking:
framework:
log:
enabled: true #是否开启记录日志
level: xx #默认是ALL,可选择,INFO、DEBUG、ERROR、WARN
参数说明:
level参数 | 参数功能 |
---|---|
INFO | 记录INFO级别的日志。 |
DEBUG | 记录DEBUG级别的日志。 |
ERROR | 记录ERROR级别的日志。 |
WARN | 记录WARN级别的日志。 |
ALL | 系统默认,记录全部级别的日志。 |
使用流程
🙅注意
下面的仅是使用示例,不代表所有用法。
- 通过pom文件引入依赖。
xml
<dependency>
<groupId>com.ikingtech.platform</groupId>
<artifactId>service-log</artifactId>
</dependency>
- 配置
yaml
iking:
framework:
web:
version: @project.version@
arch: single
log:
enabled: true
level: INFO
- 数据库初始化sql
sql
DROP TABLE IF EXISTS `operation_log`;
CREATE TABLE `operation_log`
(
`id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`tenant_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '租户标识',
`module` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '业务模块',
`operation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作内容',
`method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '方法名',
`request_method` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请求方法',
`request_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请求地址',
`request_param` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '请求参数',
`response_body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '响应体',
`operate_user_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作用户编号',
`operate_username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作用户账户',
`ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '客户端ip',
`location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '客户端地区',
`success` tinyint(3) UNSIGNED NULL DEFAULT 1 COMMENT '是否成功',
`message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '返回信息',
`operation_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人编号',
`create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人姓名',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人编号',
`update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '操作日志'
ROW_FORMAT = Dynamic;
sql
DROP TABLE IF EXISTS `system_log`;
CREATE TABLE `system_log`
(
`id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`trace_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '追踪编号',
`tenant_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '租户标识',
`package_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '包名',
`method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '方法名',
`message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '返回信息',
`exception_stack` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '异常堆栈',
`execute_time` datetime(0) NULL DEFAULT NULL COMMENT '执行时间',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人编号',
`create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人姓名',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人编号',
`update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '操作日志'
ROW_FORMAT = Dynamic;
- 使用示例
- 日志分为三种,系统日志、操作日志和登录日志。
- 当引入
service-log
依赖并在配置文件配置开启日志后,系统会自动记录日志到system_log
表。
可通过swagger接口查询三种类型的日志,如下图
- 当需要特别记录某个接口的操作日志时,可以在接口上增加
@OperationLog
注解,记录操作日志到operation_log
表。
java
@OperationLog(value = "新增一条数据")
@GetRequest(value = "/record/one", summary = "新增一条数据", description = "新增一条数据")
public R<Object> add(String cronStr) {
return R.ok();
}
注意事项
@OperationLog
注解同类调用时,被调用方会失效,只记录调用方的日志,建议嵌套调用时分为两个类使用。- 如果必须要同类调用,可以使用
AopContext.currentProxy()
方法获取当前的代理对象,然后使用代理对象调用同类中被@OperationLog
注解的方法,同时在启动类上加@EnableAspectJAutoProxy(exposeProxy = true)
注解。
java
public class LogTest {
@OperationLog(value = "新增一条数据")
@GetRequest(value = "/record/one", summary = "新增一条数据", description = "新增一条数据")
public R<Object> add(String cronStr) {
LogTest logTest = (LogTest) AopContext.currentProxy();
return logTest.save();
}
@OperationLog(value = "save")
public R<Object> save() {
return R.ok("save");
}
}