Skip to content

日志中心

提供日志查询接口及日志基本信息的模型定义。

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系统默认,记录全部级别的日志。

使用流程

🙅注意

下面的仅是使用示例,不代表所有用法。

  1. 通过pom文件引入依赖。
xml
<dependency>
   <groupId>com.ikingtech.platform</groupId>
   <artifactId>service-log</artifactId>
</dependency>
  1. 配置
yaml
iking:
  framework:
    web:
      version: @project.version@
      arch: single
    log:
      enabled: true
      level: INFO
  1. 数据库初始化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;
  1. 使用示例
  • 日志分为三种,系统日志、操作日志和登录日志。
  • 当引入service-log依赖并在配置文件配置开启日志后,系统会自动记录日志到system_log表。

可通过swagger接口查询三种类型的日志,如下图

image.png

  • 当需要特别记录某个接口的操作日志时,可以在接口上增加@OperationLog注解,记录操作日志到operation_log表。
java

@OperationLog(value = "新增一条数据")
@GetRequest(value = "/record/one", summary = "新增一条数据", description = "新增一条数据")
public R<Object> add(String cronStr) {
    return R.ok();
}

注意事项

  1. @OperationLog注解同类调用时,被调用方会失效,只记录调用方的日志,建议嵌套调用时分为两个类使用。
  2. 如果必须要同类调用,可以使用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");
    }
}