# 日志概述

用于记录系统产生的日志,提供了便捷的方式来开启日志记录,同时提供了日志查询的管理页面。

日志类型包括:

  1. 实体操作日志(创建、更新、删除、查询);
  2. 接口请求日志;(可自定义日志内容)
  3. 登录日志;(用户在应用侧登录的日志,仅支持授权码登录模式)

这些内置的日志功能,可以帮助用户更好地了解系统的运行情况,方便排查问题。但是,如果开启的日志太多,也可能会影响系统的性能,因此需要根据实际情况来开启日志。一般查询类的日志不建议开启,因为会产生大量的日志记录。

# 引入依赖

<dependency>
    <groupId>net.bingosoft.fuse.oss</groupId>
    <artifactId>lcdp-services-log</artifactId>
    <version>${lcdp.version}</version>
</dependency>
  • 具体版本在【版本更新】中查看

注意:在引入依赖后,数据库中会自动创建两张表:

  • sys_audit_log:用于记录各种类型的操作日志
  • sys_client_log:用于记录终端的日志(例如移动端,PC端应用的日志,属于特殊场景)

# 启用日志

# 1.实体操作日志

在实体上开启日志,对实体的创建、更新、删除、查询等操作进行日志记录。这里以合同实体为例。

第一种方式:在IDE中开启日志

适用场景:通过IDE创建的实体

实体开启日志

第二种方式:在代码中开启日志

适用场景:通过代码创建的实体

需要在实体类上增加 @fly.core.data.annotation.Audited 注解,或在 @Entity 注解中设置 audited = true,参考如下代码:

@Entity(audited = true)
public class Contract {
    // fields
}

# 2.接口请求日志

在接口上开启日志,对接口的请求进行日志记录。这里以基于SQL的查询接口为例。

注意:基于实体创建的接口,不需要在接口上单独开启记录日志,实体开启日志后,会自动记录,日志类型为实体操作。如果同时开启,将会有两条日志记录。

第一种方式:在IDE中开启日志

适用场景:通过IDE创建的接口

接口请求日志

第二种方式:在代码中开启日志

适用场景:通过代码创建的接口

对于 Controller 中定义的接口,除了在启动类或配置类上开启 @EnableAuditing,还需要在类或接口方法上增加 @Auditable 注解:

import fly.core.security.auditing.EnableAuditing;

@EnableAuditing  // 启动类开启日志记录
public class WebApplication {
    ...
}

import fly.core.meta.annotation.Summary;
import fly.core.security.auditing.Auditable;

@RestController
@RequestMapping("/contract")
@Auditable  // 开启日志记录
public class ContractController {

    @GetMapping("/test")
    @Summary("自定义日志内容")
    public void test() {
    }

}

示例中@Summary注解用于自定义日志内容,如果不设置,将取接口方法名。除了@Summary注解外,还可以使用下列注解设置值:

  • @fly.core.meta.annotation.Desc
  • @fly.core.meta.annotation.Title
  • @io.swagger.v3.oas.annotations.Operation(description = "")
  • @io.swagger.v3.oas.annotations.Operation(summary = "")

# 3.登录日志

参考 登录日志 章节。

# 4.业务类中记录日志

除了系统自动记录的日志外,用户也可以在业务代码中记录日志。业务代码中记录的日志和系统自动记录的日志一样,都会存储在SysAuditLogEntity实体中。

启动类或配置类上开启 @EnableAuditing,并在代码中注入 LcdpAuditLogHandler Bean,通过log方法记录日志。参考如下代码:

import net.bingosoft.fuse.lcdp.log.handler.LcdpAuditLogHandler;

@Bean
LcdpAuditLogHandler auditLogHandler;

...

protect void demo() {
    // 记录日志
    auditLogHandler.log(AuditLog.builder("操作内容", LogType.MODULE, OperationType.OTHER)
        .data(dataObj) // 业务数据
        .build());

}

# 查询日志

# 1.操作日志

页面地址:/lowcode/syslog.operation,在导航页中配置导航路径为该地址。

日志信息包括:登录账号、操作人名称、操作类型(HTTP、创建、修改、删除、查询)、日志类型(接口请求、实体操作)、IP地址、日志内容、创建时间等信息。

# 2.登录日志

页面地址:/lowcode/syslog.login,在导航页中配置导航路径为该地址。该模块在1.8.8后续的版本中新增,在添加之前需要先调整下登录模式,修改为授权码登录,才能在应用侧获取到登录日志,登录模式调整不会影响业务应用的运行。参考:授权码模式登录

顶部