package com.iailab.module.infra.dal.dataobject.logger; import com.iailab.framework.common.enums.UserTypeEnum; import com.iailab.framework.mybatis.core.dataobject.BaseDO; import com.iailab.module.infra.enums.logger.ApiErrorLogProcessStatusEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import java.time.LocalDateTime; /** * API 异常数据 * * @author iailab */ @TableName("infra_api_error_log") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor @KeySequence(value = "infra_api_error_log_seq") public class ApiErrorLogDO extends BaseDO { /** * {@link #requestParams} 的最大长度 */ public static final Integer REQUEST_PARAMS_MAX_LENGTH = 8000; /** * 编号 */ @TableId private Long id; /** * 用户编号 */ private Long userId; /** * 链路追踪编号 * * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 */ private String traceId; /** * 用户类型 * * 枚举 {@link UserTypeEnum} */ private Integer userType; /** * 应用名 * * 目前读取 spring.application.name */ private String applicationName; // ========== 请求相关字段 ========== /** * 请求方法名 */ private String requestMethod; /** * 访问地址 */ private String requestUrl; /** * 请求参数 * * query: Query String * body: Quest Body */ private String requestParams; /** * 用户 IP */ private String userIp; /** * 浏览器 UA */ private String userAgent; // ========== 异常相关字段 ========== /** * 异常发生时间 */ private LocalDateTime exceptionTime; /** * 异常名 * * {@link Throwable#getClass()} 的类全名 */ private String exceptionName; /** * 异常导致的消息 * * {@link cn.hutool.core.exceptions.ExceptionUtil#getMessage(Throwable)} */ private String exceptionMessage; /** * 异常导致的根消息 * * {@link cn.hutool.core.exceptions.ExceptionUtil#getRootCauseMessage(Throwable)} */ private String exceptionRootCauseMessage; /** * 异常的栈轨迹 * * {@link org.apache.commons.lang3.exception.ExceptionUtils#getStackTrace(Throwable)} */ private String exceptionStackTrace; /** * 异常发生的类全名 * * {@link StackTraceElement#getClassName()} */ private String exceptionClassName; /** * 异常发生的类文件 * * {@link StackTraceElement#getFileName()} */ private String exceptionFileName; /** * 异常发生的方法名 * * {@link StackTraceElement#getMethodName()} */ private String exceptionMethodName; /** * 异常发生的方法所在行 * * {@link StackTraceElement#getLineNumber()} */ private Integer exceptionLineNumber; // ========== 处理相关字段 ========== /** * 处理状态 * * 枚举 {@link ApiErrorLogProcessStatusEnum} */ private Integer processStatus; /** * 处理时间 */ private LocalDateTime processTime; /** * 处理用户编号 * * 关联 com.iailab.adminserver.modules.system.dal.dataobject.user.SysUserDO.SysUserDO#getId() */ private Long processUserId; }