Skip to content

操作日志模块

自动记录操作日志和登录日志。

引入依赖

xml
<dependency>
    <groupId>com.mdframe.forge</groupId>
    <artifactId>forge-starter-log</artifactId>
</dependency>

使用示例

记录操作日志

java
@OperationLog(module = "用户管理", operation = "新增用户")
@PostMapping
public Result add(@RequestBody User user) {
    // 业务逻辑
}

注解说明

java
@OperationLog(
    module = "用户管理",      // 模块名称
    operation = "新增用户",   // 操作描述
    recordParams = true,     // 是否记录参数
    recordResult = false     // 是否记录返回值
)

登录日志

登录日志通过事件监听自动记录:

java
@Component
public class LoginLogListener {
    
    @EventListener
    public void onLoginSuccess(LoginSuccessEvent event) {
        // 记录登录成功日志
    }
    
    @EventListener
    public void onLoginFailure(LoginFailureEvent event) {
        // 记录登录失败日志
    }
}

日志结构

OperationLogInfo

java
public class OperationLogInfo {
    private Long logId;           // 日志 ID
    private String module;        // 模块
    private String operation;     // 操作
    private String method;        // 方法名
    private String requestUrl;    // 请求 URL
    private String requestMethod; // 请求方法
    private String requestParams; // 请求参数
    private String responseData;  // 响应数据
    private Long executeTime;     // 执行时间
    private String ip;            // IP 地址
    private String location;      // 地理位置
    private Long userId;          // 用户 ID
    private String userName;      // 用户名
    private Integer status;       // 状态
    private String errorMsg;      // 错误信息
}

LoginLogInfo

java
public class LoginLogInfo {
    private Long logId;           // 日志 ID
    private String userName;      // 用户名
    private String ip;            // IP 地址
    private String location;      // 地理位置
    private String browser;       // 浏览器
    private String os;            // 操作系统
    private Integer status;       // 状态
    private String message;       // 消息
    private Date loginTime;       // 登录时间
}

SPI 扩展

ILogService

自定义日志存储:

java
@Component
public class MyLogService implements ILogService {
    
    @Override
    public void saveOperationLog(OperationLogInfo log) {
        // 保存操作日志
    }
    
    @Override
    public void saveLoginLog(LoginLogInfo log) {
        // 保存登录日志
    }
}

配置

yaml
forge:
  log:
    enabled: true
    async: true           # 异步记录
    record-params: true   # 记录参数
    exclude-urls:         # 排除的 URL
      - /actuator/**